Compare commits

..

128 Commits

Author SHA1 Message Date
Julius Härtl
1af1c7f581 Bump version to 1.8.3
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-01-02 08:31:59 +01:00
Nextcloud bot
87439dbaad Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-02 03:17:20 +00:00
Nextcloud bot
c79ec72b79 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-01 03:01:27 +00:00
Nextcloud bot
beff26500a Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-31 03:20:22 +00:00
dependabot[bot]
6df2e2b755 Merge pull request #4347 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/router-2.0.1 2022-12-30 13:30:46 +00:00
dependabot[bot]
4b793d3738 Bump @nextcloud/router from 2.0.0 to 2.0.1
Bumps [@nextcloud/router](https://github.com/nextcloud/nextcloud-router) from 2.0.0 to 2.0.1.
- [Release notes](https://github.com/nextcloud/nextcloud-router/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-router/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-router/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-30 13:17:58 +00:00
Nextcloud bot
399a85ce9f Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-27 03:13:47 +00:00
dependabot[bot]
673222d37e Merge pull request #4337 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/vue-7.3.0 2022-12-24 05:02:18 +00:00
dependabot[bot]
eced4dd2d3 Merge pull request #4335 from nextcloud/dependabot/npm_and_yarn/stable25/babel/runtime-7.20.7 2022-12-24 04:03:39 +00:00
Nextcloud bot
293f241aa6 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-24 03:39:59 +00:00
dependabot[bot]
5a79c61732 Bump @nextcloud/vue from 7.2.0 to 7.3.0
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.2.0 to 7.3.0.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-vue/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v7.2.0...v7.3.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>
2022-12-24 02:01:57 +00:00
dependabot[bot]
c28a877d0b Bump @babel/runtime from 7.20.6 to 7.20.7
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.20.6 to 7.20.7.
- [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.20.7/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>
2022-12-24 02:01:46 +00:00
Nextcloud bot
484b9df8c9 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-21 02:38:09 +00:00
Julius Härtl
db7403acc0 Merge pull request #4328 from nextcloud/backport/4315/stable25 2022-12-20 16:46:10 +01:00
Johan Bernhardsson
8c8788eab3 Fix component renaming so that acl works on shares again
Signed-off-by: Johan Bernhardsson <johan.bernhardsson@redpill-linpro.com>
2022-12-19 09:55:54 +00:00
Julius Härtl
0f4ad52ca9 Merge pull request #4326 from nextcloud/automated/noid/stable25-update-nextcloud-ocp
[stable25] Update nextcloud/ocp dependency
2022-12-19 09:37:54 +01:00
nextcloud-command
8b156958f8 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-12-18 04:21:23 +00:00
Nextcloud bot
88ba778e55 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-18 02:27:08 +00:00
dependabot[bot]
192314fb02 Merge pull request #4320 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/axios-2.3.0 2022-12-17 05:25:17 +00:00
dependabot[bot]
0bfb983a1c Bump @nextcloud/axios from 2.2.0 to 2.3.0
Bumps [@nextcloud/axios](https://github.com/nextcloud/nextcloud-axios) from 2.2.0 to 2.3.0.
- [Release notes](https://github.com/nextcloud/nextcloud-axios/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-axios/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-axios/compare/v2.2.0...v2.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-17 02:01:48 +00:00
Nextcloud bot
c3a8f797d1 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-16 02:27:03 +00:00
Nextcloud bot
b67ed2057c [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-14 02:29:27 +00:00
Nextcloud bot
234ba20eba [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-13 02:40:03 +00:00
dependabot[bot]
88097f98e8 Merge pull request #4310 from nextcloud/dependabot/npm_and_yarn/stable25/relative-ci/agent-4.1.3 2022-12-10 04:45:24 +00:00
dependabot[bot]
4c3c483011 Merge pull request #4309 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/vue-7.2.0 2022-12-10 03:56:30 +00:00
dependabot[bot]
5a9cba00ed Bump @relative-ci/agent from 4.1.1 to 4.1.3
Bumps [@relative-ci/agent](https://github.com/relative-ci/agent) from 4.1.1 to 4.1.3.
- [Release notes](https://github.com/relative-ci/agent/releases)
- [Commits](https://github.com/relative-ci/agent/compare/v4.1.1...v4.1.3)

---
updated-dependencies:
- dependency-name: "@relative-ci/agent"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-10 02:03:17 +00:00
dependabot[bot]
8f822cfd84 Bump @nextcloud/vue from 7.1.0 to 7.2.0
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.1.0 to 7.2.0.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-vue/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v7.1.0...v7.2.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>
2022-12-10 02:03:07 +00:00
Marcel Klehr
45c19c1c2d Merge pull request #4301 from nextcloud/backport/4194/stable25 2022-12-09 15:46:26 +01:00
Michal Polacik
369749bb46 Permanently delete deck cards marked as deleted after 5 min in a cron job
Limit deleted cards in one cron job run to 500

Converted spaces to tabs

Added missing import for CardMapper class

Added another missing import for CardMapper class

Fixed response object in findToDelete method + fixed 2 misspellings in API.md

Fixed invalid parameter type

Fix DeleteCronTest

Signed-off-by: Marcel Klehr <mklehr@gmx.net>

Fix lint errors

Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2022-12-09 14:38:52 +00:00
Nextcloud bot
5ec04ac670 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-04 02:22:11 +00:00
dependabot[bot]
69b8ed2486 Merge pull request #4290 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/vue-7.1.0 2022-12-03 06:13:59 +00:00
dependabot[bot]
74d8fba022 Merge pull request #4284 from nextcloud/dependabot/npm_and_yarn/stable25/babel/runtime-7.20.6 2022-12-03 04:17:54 +00:00
dependabot[bot]
2ca8863b5d bump @nextcloud/vue from 7.0.1 to 7.1.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>
2022-12-03 03:52:10 +00:00
dependabot[bot]
63e57f2667 Bump @babel/runtime from 7.20.1 to 7.20.6
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.20.1 to 7.20.6.
- [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.20.6/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>
2022-12-03 03:00:19 +00:00
Nextcloud bot
165ef3adf6 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-01 02:23:03 +00:00
Nextcloud bot
8ccdc6a2ed [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-30 02:23:26 +00:00
dependabot[bot]
a04f2004bd Merge pull request #4277 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/axios-2.2.0 2022-11-26 04:38:08 +00:00
dependabot[bot]
ad00818bd1 Bump @nextcloud/axios from 2.1.0 to 2.2.0
Bumps [@nextcloud/axios](https://github.com/nextcloud/nextcloud-axios) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/nextcloud/nextcloud-axios/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-axios/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-axios/compare/v2.1.0...v2.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-26 03:42:05 +00:00
Nextcloud bot
138087b296 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-23 02:25:59 +00:00
Nextcloud bot
cd5500ee50 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-22 02:26:45 +00:00
Nextcloud bot
cda8a40607 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-21 02:22:55 +00:00
Nextcloud bot
84e6679704 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-20 02:24:05 +00:00
dependabot[bot]
7d8bc27d73 Merge pull request #4238 from nextcloud/dependabot/npm_and_yarn/stable25/vue-2.7.14 2022-11-19 07:31:51 +00:00
Nextcloud bot
566de0f9e7 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-19 02:25:07 +00:00
dependabot[bot]
146fbbcb6f Merge pull request #4258 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/axios-2.1.0 2022-11-19 02:02:24 +00:00
dependabot[bot]
d2dd0d2914 Bump vue from 2.7.9 to 2.7.14
Bumps [vue](https://github.com/vuejs/core) from 2.7.9 to 2.7.14.
- [Release notes](https://github.com/vuejs/core/releases)
- [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/core/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 23:01:25 +00:00
dependabot[bot]
6010e839d0 Merge pull request #4256 from nextcloud/dependabot/npm_and_yarn/stable25/vue-at-2.5.1 2022-11-18 23:00:28 +00:00
dependabot[bot]
2895f563cd Merge pull request #4247 from nextcloud/dependabot/npm_and_yarn/stable25/babel/runtime-7.20.1 2022-11-18 22:55:22 +00:00
dependabot[bot]
7663a4a346 Merge pull request #4250 from nextcloud/dependabot/npm_and_yarn/stable25/relative-ci/agent-4.1.1 2022-11-18 22:55:07 +00:00
dependabot[bot]
864272c1a2 Merge pull request #4253 from nextcloud/dependabot/npm_and_yarn/stable25/cypress-10.11.0 2022-11-18 22:54:30 +00:00
dependabot[bot]
4f75064ba4 Merge pull request #4242 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/vue-richtext-2.0.4 2022-11-18 22:53:45 +00:00
dependabot[bot]
ffd6d4dedc Merge pull request #4236 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/webpack-vue-config-5.4.0 2022-11-18 22:52:05 +00:00
dependabot[bot]
891139f682 Merge pull request #4233 from nextcloud/dependabot/npm_and_yarn/stable25/dompurify-2.4.1 2022-11-18 22:49:12 +00:00
dependabot[bot]
496304c896 Merge pull request #4232 from nextcloud/dependabot/npm_and_yarn/stable25/jest-29.3.1 2022-11-18 22:49:07 +00:00
dependabot[bot]
9cfde4d80c Bump @nextcloud/axios from 2.0.0 to 2.1.0
Bumps [@nextcloud/axios](https://github.com/nextcloud/nextcloud-axios) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/nextcloud/nextcloud-axios/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-axios/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-axios/compare/v2.0.0...v2.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 22:47:11 +00:00
dependabot[bot]
eba4453728 Merge pull request #4229 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/vue-7.0.1 2022-11-18 22:45:56 +00:00
dependabot[bot]
f36a2a11a6 Bump vue-at from 2.5.0 to 2.5.1
Bumps [vue-at](https://github.com/fritx/vue-at) from 2.5.0 to 2.5.1.
- [Release notes](https://github.com/fritx/vue-at/releases)
- [Commits](https://github.com/fritx/vue-at/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 19:15:19 +00:00
dependabot[bot]
6c9af9cc12 Bump @relative-ci/agent from 4.1.0 to 4.1.1
Bumps [@relative-ci/agent](https://github.com/relative-ci/agent) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/relative-ci/agent/releases)
- [Commits](https://github.com/relative-ci/agent/compare/v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: "@relative-ci/agent"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 19:15:12 +00:00
dependabot[bot]
de6604ad5f Bump @babel/runtime from 7.19.0 to 7.20.1
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.19.0 to 7.20.1.
- [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.20.1/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>
2022-11-18 19:15:11 +00:00
dependabot[bot]
d4ebfc7ab1 Bump cypress from 10.8.0 to 10.11.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 10.8.0 to 10.11.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/v10.8.0...v10.11.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 19:15:07 +00:00
dependabot[bot]
2a2f578c13 Bump @nextcloud/vue-richtext from 2.0.1 to 2.0.4
Bumps [@nextcloud/vue-richtext](https://github.com/nextcloud/vue-richtext) from 2.0.1 to 2.0.4.
- [Release notes](https://github.com/nextcloud/vue-richtext/releases)
- [Changelog](https://github.com/nextcloud/vue-richtext/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/vue-richtext/compare/v2.0.1...v2.0.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 19:15:04 +00:00
dependabot[bot]
f04cf33c78 Bump @nextcloud/webpack-vue-config from 5.3.0 to 5.4.0
Bumps [@nextcloud/webpack-vue-config](https://github.com/nextcloud/webpack-vue-config) from 5.3.0 to 5.4.0.
- [Release notes](https://github.com/nextcloud/webpack-vue-config/releases)
- [Changelog](https://github.com/nextcloud/webpack-vue-config/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/webpack-vue-config/compare/v5.3.0...v5.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 19:14:58 +00:00
dependabot[bot]
6d89bbacf7 Bump dompurify from 2.4.0 to 2.4.1
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.4.0 to 2.4.1.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/2.4.0...2.4.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 19:14:50 +00:00
dependabot[bot]
0010255391 Bump jest from 29.0.1 to 29.3.1
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 29.0.1 to 29.3.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v29.3.1/packages/jest)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 19:14:50 +00:00
dependabot[bot]
50de5610b9 Bump @nextcloud/vue from 7.0.0-beta.4 to 7.0.1
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.0.0-beta.4 to 7.0.1.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-vue/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v7.0.0-beta.4...v7.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 19:14:45 +00:00
dependabot[bot]
8def56fd8b Merge pull request #4224 from nextcloud/dependabot/npm_and_yarn/stable25/vue/test-utils-1.3.3 2022-11-18 19:13:47 +00:00
dependabot[bot]
bdbcb236a1 Bump @vue/test-utils from 1.3.0 to 1.3.3
Bumps [@vue/test-utils](https://github.com/vuejs/test-utils) from 1.3.0 to 1.3.3.
- [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>
2022-11-18 17:27:57 +00:00
Julius Härtl
70fa18f186 Bump version to 1.8.2
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-11-18 16:32:59 +01:00
Nextcloud bot
43a7255c2a [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-17 02:21:27 +00:00
Julius Härtl
8c24def8d8 Merge pull request #4208 from nextcloud/automated/noid/stable25-update-nextcloud-ocp 2022-11-13 16:55:58 +01:00
nextcloud-command
937f285689 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-11-13 03:38:08 +00:00
Nextcloud bot
a66c960b21 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-12 02:22:15 +00:00
Julius Härtl
81d922c8bd Merge pull request #4201 from nextcloud/backport/4180/stable25 2022-11-11 15:46:45 +01:00
Johannes Szeibert
347364543d minor style fixes
Signed-off-by: Johannes Szeibert <johannes@szeibert.de>
2022-11-11 14:58:21 +01:00
Nextcloud bot
6bc703a9b0 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-11 02:21:19 +00:00
Nextcloud bot
ee99a768f4 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-10 02:22:57 +00:00
Julius Härtl
beee212fcb Merge pull request #4198 from nextcloud/backport/4196/stable25 2022-11-09 11:45:53 +01:00
Julius Härtl
33145e377b Add missing userId property
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-11-09 09:57:45 +00:00
Nextcloud bot
5552a9d538 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-09 02:21:44 +00:00
Nextcloud bot
4fcdb6f304 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-05 02:22:31 +00:00
Nextcloud bot
0e4d345fc1 [tx-robot] Update transifex configuration
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-05 02:22:07 +00:00
Julius Härtl
ee0092e7ca Merge pull request #4179 from nextcloud/backport/4173/stable25 2022-11-03 21:47:14 +01:00
Julius Härtl
c3f0a1edc4 Fix validation of attachment data
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-11-03 20:37:47 +01:00
Julius Härtl
a8b46ad10f Unify getting the share for attachments
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-10-31 20:18:10 +00:00
Julius Härtl
daa65b40fb Add integration test for attachment handling on cards
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-10-31 20:18:10 +00:00
Julius Härtl
fa6027f7ba Merge pull request #4174 from nextcloud/backport/4059/stable25 2022-10-31 15:54:06 +01:00
Julius Härtl
f26a085b13 Add some tests for parameter validation
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-10-31 11:59:50 +00:00
Luka Trovic
9d09916c17 feat: add validators to check values in services
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2022-10-31 11:59:50 +00:00
Julius Härtl
f250d9956b Merge pull request #4172 from nextcloud/automated/noid/stable25-update-nextcloud-ocp
[stable25] Update nextcloud/ocp dependency
2022-10-30 08:40:35 +01:00
nextcloud-command
93994bb39c Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-10-30 03:58:20 +00:00
Marcel Klehr
17f7d19624 Merge pull request #4157 from nextcloud/release/1.8.1 2022-10-27 11:47:05 +02:00
Julius Härtl
7e0c1a8024 Merge pull request #4092 from nextcloud/migrate-stable25-christophwurst-package 2022-10-27 11:32:59 +02:00
Julius Härtl
f6dc22c545 Do not install composer dev dependencies for running
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-10-27 09:37:16 +02:00
Joas Schilling
d196956519 Migrate to nextcloud/OCP package in stable25
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-26 21:19:16 +02:00
Marcel Klehr
4769c69ba7 v1.8.1
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2022-10-26 15:59:27 +02:00
Julius Härtl
f322b6191e Merge pull request #4155 from nextcloud/backport/4153/stable25 2022-10-25 21:26:46 +02:00
Joas Schilling
e076c76b3f Fix Duedate activity
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-25 19:17:50 +00:00
Julius Härtl
df8257a18f Merge pull request #4151 from nextcloud/automated/noid/stable25-update-nextcloud-ocp 2022-10-23 10:22:20 +02:00
nextcloud-command
e7f22ca0d3 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-10-23 04:14:17 +00:00
Julius Härtl
a9921ecdf0 Bump version to 1.8.0
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-10-19 21:56:11 +02:00
Julius Härtl
a5da643513 Merge pull request #4142 from nextcloud/backport/4101/stable25
[stable25] disables autocomplete on card creation
2022-10-19 21:32:16 +02:00
Julius Härtl
8c68b7ce83 Merge pull request #4141 from nextcloud/backport/4065/stable25 2022-10-19 21:22:13 +02:00
Julius Härtl
a4137a4edd Merge pull request #4090 from nextcloud/backport/4084/stable25 2022-10-19 21:15:54 +02:00
mokkin
cb5a181993 disables autocomplete on card creation
solves https://github.com/nextcloud/deck/issues/4083

Signed-off-by: mokkin <markus@haybach.com>
2022-10-19 19:10:57 +00:00
Julius Härtl
46972646d8 Cache user membership for circles
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-10-19 19:05:47 +00:00
Julius Härtl
8549d4a13f Merge pull request #4140 from nextcloud/backport/4115/stable25 2022-10-19 21:05:00 +02:00
Joas Schilling
47077af838 Fix missing icon for activity rendering
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-19 21:00:47 +02:00
Julius Härtl
6cc589539b Avoid always setting the current time on card updates
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-10-19 18:56:39 +00:00
Marcel Klehr
2237745c09 Fix duedate tests
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2022-10-19 18:56:39 +00:00
Joas Schilling
b74569abef Fix issue with duedate format
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-19 18:56:39 +00:00
Julius Härtl
de67847ef1 Pin postgres to 14
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-10-18 11:29:24 +02:00
Julius Härtl
a430eaf41f Merge pull request #4117 from nextcloud/backport/3439/stable25 2022-10-18 11:26:36 +02:00
Julius Härtl
31b68ae5e5 Activity: Set event link also for notifications that get emitted from activity
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-10-14 10:50:59 +00:00
Julius Härtl
fa1877ef7b Merge pull request #4116 from nextcloud/backport/4113/stable25
[stable25] Fix sorting stacks
2022-10-13 18:50:39 +02:00
Joas Schilling
5851c4a5f1 Fix sorting stacks
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-13 13:27:46 +00:00
Julius Härtl
4fadb9a633 Merge pull request #4105 from nextcloud/fix/25-no-card-menu-without-description 2022-10-11 14:53:32 +02:00
Marcel Klehr
d021559d7c Fix Card menu not displaying when description is not set
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2022-10-07 11:46:25 +02:00
Julius Härtl
7f22925063 Merge pull request #4068 from nextcloud/update-stable25-target-versions
Adjust testing matrix for Nextcloud 25 on stable25
2022-10-02 10:22:32 +02:00
Julien Veyssier
e65fa778cb Merge pull request #4078 from nextcloud/backport/4077/stable25
[stable25] use OCP\Collaboration\Reference\Reference
2022-09-27 10:21:51 +02:00
Julien Veyssier
003ee7a926 use OCP\Collaboration\Reference\Reference instead of the recently removed OC\Collaboration\Reference\Reference
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
2022-09-26 17:48:49 +00:00
Julien Veyssier
8b344a653f Merge pull request #4075 from nextcloud/backport/4069/stable25
[stable25] Reference widget adjustments for Text
2022-09-25 22:29:24 +02:00
Julien Veyssier
7403aafe16 fix width issues
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
2022-09-25 20:23:37 +00:00
Julien Veyssier
f7b6e8a3bc use richtext component for description, adjust style to make it work in Text
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
2022-09-25 20:23:36 +00:00
Julius Härtl
ad051c5e0e Bump version to 1.8.0-beta.2
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-09-23 14:40:50 +02:00
Julius Härtl
7ceb23f7a2 Merge pull request #4072 from nextcloud/backport/4071/stable25
[stable25] Use global import for nextcloud-vue
2022-09-23 12:59:37 +02:00
Julius Härtl
9760c838aa Fix imports
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-09-23 10:00:37 +00:00
Julius Härtl
8002cecda4 Use global import for nextcloud-vue
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-09-23 10:00:37 +00:00
Joas Schilling
27b1c6a2f2 Adjust testing matrix for Nextcloud 25 on stable25
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-09-22 20:31:13 +02:00
169 changed files with 34497 additions and 35654 deletions

View File

@@ -9,6 +9,6 @@ module.exports = {
'jsdoc/check-param-names': ['off'],
'jsdoc/no-undefined-types': ['off'],
'jsdoc/require-property-description': ['off'],
'import/no-named-as-default-member': ['off'],
'import/no-named-as-default-member': ['off']
},
}

View File

@@ -2,7 +2,7 @@ version: 2
updates:
- package-ecosystem: npm
directory: "/"
target-branch: "main"
target-branch: "master"
schedule:
interval: weekly
day: saturday
@@ -11,41 +11,6 @@ updates:
open-pull-requests-limit: 10
reviewers:
- juliushaertl
- package-ecosystem: npm
target-branch: stable25
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: stable24
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: composer
directory: "/"
schedule:

View File

@@ -1,6 +1,6 @@
* Resolves: # <!-- related github issue -->
* Target version: main
* Target version: master
### Summary

View File

@@ -9,7 +9,7 @@ on:
jobs:
build:
runs-on: ubuntu-latest
runs-on: ubuntu-18.04
strategy:
matrix:
@@ -24,14 +24,14 @@ jobs:
- name: Set up npm7
run: npm i -g npm@7
- name: Setup PHP
uses: shivammathur/setup-php@2.23.0
uses: shivammathur/setup-php@2.21.2
with:
php-version: '7.4'
tools: composer
- name: install dependencies
run: |
wget https://github.com/ChristophWurst/krankerl/releases/download/v0.14.0/krankerl_0.14.0_amd64.deb
sudo dpkg -i krankerl_0.14.0_amd64.deb
wget https://github.com/ChristophWurst/krankerl/releases/download/v0.12.2/krankerl_0.12.2_amd64.deb
sudo dpkg -i krankerl_0.12.2_amd64.deb
- name: package
run: |
uname -a

View File

@@ -10,7 +10,7 @@ on:
types: [published]
env:
PHP_VERSION: 8.1
PHP_VERSION: 7.4
jobs:
build_and_publish:
@@ -21,42 +21,42 @@ jobs:
steps:
- name: Check actor permission
uses: skjnldsv/check-actor-permission@e591dbfe838300c007028e1219ca82cc26e8d7c5 # v2.1
uses: skjnldsv/check-actor-permission@v2
with:
require: write
- name: Set app env
run: |
# Split and keep last
# Split and keep last
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
echo "APP_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
uses: actions/checkout@v3
with:
path: ${{ env.APP_NAME }}
- name: Get appinfo data
id: appinfo
uses: skjnldsv/xpath-action@7e6a7c379d0e9abc8acaef43df403ab4fc4f770c # master
uses: skjnldsv/xpath-action@master
with:
filename: ${{ env.APP_NAME }}/appinfo/info.xml
expression: "//info//dependencies//nextcloud/@min-version"
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@1bdcee71fa343c46b18dc6aceffb4cd1e35209c6 # v1.2
uses: skjnldsv/read-package-engines-version-actions@v1.2
id: versions
# Continue if no package.json
continue-on-error: true
with:
path: ${{ env.APP_NAME }}
fallbackNode: "^16"
fallbackNpm: "^7"
fallbackNode: "^12"
fallbackNpm: "^6"
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
# Skip if no package.json
if: ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # v3
uses: actions/setup-node@v3
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
@@ -66,16 +66,14 @@ jobs:
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
- name: Set up php ${{ env.PHP_VERSION }}
uses: shivammathur/setup-php@1a18b2267f80291a81ca1d33e7c851fe09e7dfc4 # v2
uses: shivammathur/setup-php@2.21.2
with:
php-version: ${{ env.PHP_VERSION }}
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Check composer.json
id: check_composer
uses: andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2
uses: andstor/file-existence-action@v1
with:
files: "${{ env.APP_NAME }}/composer.json"
@@ -93,29 +91,16 @@ jobs:
npm ci
npm run build
- name: Check Krankerl config
id: krankerl
uses: andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2
with:
files: ${{ env.APP_NAME }}/krankerl.toml
- name: Install Krankerl
if: steps.krankerl.outputs.files_exists == 'true'
run: |
wget https://github.com/ChristophWurst/krankerl/releases/download/v0.14.0/krankerl_0.14.0_amd64.deb
sudo dpkg -i krankerl_0.14.0_amd64.deb
wget https://github.com/ChristophWurst/krankerl/releases/download/v0.13.0/krankerl_0.13.0_amd64.deb
sudo dpkg -i krankerl_0.13.0_amd64.deb
- name: Package ${{ env.APP_NAME }} ${{ env.APP_VERSION }} with krankerl
if: steps.krankerl.outputs.files_exists == 'true'
- name: Package ${{ env.APP_NAME }} ${{ env.APP_VERSION }}
# Try krankerl, fallback to makefile
run: |
cd ${{ env.APP_NAME }}
krankerl package
- name: Package ${{ env.APP_NAME }} ${{ env.APP_VERSION }} with makefile
if: steps.krankerl.outputs.files_exists != 'true'
run: |
cd ${{ env.APP_NAME }}
make appstore
krankerl package || make appstore
- name: Checkout server ${{ fromJSON(steps.appinfo.outputs.result).nextcloud.min-version }}
continue-on-error: true
@@ -126,7 +111,7 @@ jobs:
unzip latest-$NCVERSION.zip
- name: Checkout server master fallback
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
uses: actions/checkout@v3
if: ${{ steps.server-checkout.outcome != 'success' }}
with:
repository: nextcloud/server
@@ -148,7 +133,7 @@ jobs:
tar -zcvf ${{ env.APP_NAME }}.tar.gz ${{ env.APP_NAME }}
- name: Attach tarball to github release
uses: svenstaro/upload-release-action@133984371c30d34e38222a64855679a414cb7575 # v2
uses: svenstaro/upload-release-action@v2
id: attach_to_release
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
@@ -158,7 +143,7 @@ jobs:
overwrite: true
- name: Upload app to Nextcloud appstore
uses: nextcloud-releases/nextcloud-appstore-push-action@a011fe619bcf6e77ddebc96f9908e1af4071b9c1 # v1
uses: nextcloud-releases/nextcloud-appstore-push-action@v1
with:
app_name: ${{ env.APP_NAME }}
appstore_token: ${{ secrets.APPSTORE_TOKEN }}

View File

@@ -9,8 +9,8 @@ on:
issue_comment:
types: created
permissions:
contents: read
permissions:
contents: read
jobs:
rebase:
@@ -23,7 +23,7 @@ jobs:
steps:
- name: Add reaction on start
uses: peter-evans/create-or-update-comment@5adcb0bb0f9fb3f95ef05400558bdb3f329ee808 # v2.1.0
uses: peter-evans/create-or-update-comment@v2
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
repository: ${{ github.event.repository.full_name }}
@@ -31,18 +31,18 @@ jobs:
reaction-type: "+1"
- name: Checkout the latest code
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
uses: actions/checkout@v3
with:
fetch-depth: 0
token: ${{ secrets.COMMAND_BOT_PAT }}
- name: Automatic Rebase
uses: cirrus-actions/rebase@b87d48154a87a85666003575337e27b8cd65f691 # 1.8
uses: cirrus-actions/rebase@1.7
env:
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
- name: Add reaction on failure
uses: peter-evans/create-or-update-comment@5adcb0bb0f9fb3f95ef05400558bdb3f329ee808 # v2.1.0
uses: peter-evans/create-or-update-comment@v2
if: failure()
with:
token: ${{ secrets.COMMAND_BOT_PAT }}

View File

@@ -4,7 +4,7 @@ on:
pull_request:
push:
branches:
- main
- master
- stable*
env:
@@ -21,9 +21,9 @@ jobs:
matrix:
node-version: [14.x]
# containers: [1, 2, 3]
php-versions: [ '8.0' ]
php-versions: [ '7.4' ]
databases: [ 'sqlite' ]
server-versions: [ 'master' ]
server-versions: [ 'stable25' ]
steps:
- name: Use Node.js ${{ matrix.node-version }}
@@ -52,7 +52,7 @@ jobs:
path: apps/${{ env.APP_NAME }}
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@2.23.0
uses: shivammathur/setup-php@2.21.2
with:
php-version: ${{ matrix.php-versions }}
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, zip, gd, apcu
@@ -84,7 +84,7 @@ jobs:
curl -v http://localhost:8081/index.php/login
- name: Cypress run
uses: cypress-io/github-action@v5
uses: cypress-io/github-action@v4
with:
record: true
parallel: false
@@ -96,7 +96,7 @@ jobs:
npm_package_name: ${{ env.APP_NAME }}
- name: Upload test failure screenshots
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v2
if: failure()
with:
name: Upload screenshots
@@ -104,7 +104,7 @@ jobs:
retention-days: 5
- name: Upload nextcloud logs
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v2
if: failure()
with:
name: Upload nextcloud log

View File

@@ -15,26 +15,22 @@ on:
permissions:
contents: read
concurrency:
group: dependabot-approve-merge-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
auto-approve-merge:
if: github.actor == 'dependabot[bot]'
runs-on: ubuntu-latest
permissions:
# for hmarr/auto-approve-action to approve PRs
pull-requests: write
pull-requests: write
steps:
# Github actions bot approve
- uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v2
- uses: hmarr/auto-approve-action@v2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
# Nextcloud bot approve and merge request
- uses: ahmadnassri/action-dependabot-auto-merge@45fc124d949b19b6b8bf6645b6c9d55f4f9ac61a # v2
- uses: ahmadnassri/action-dependabot-auto-merge@v2
with:
target: minor
github-token: ${{ secrets.DEPENDABOT_AUTOMERGE_TOKEN }}

View File

@@ -5,29 +5,16 @@
name: Pull request checks
on:
pull_request:
types: [opened, ready_for_review, reopened, synchronize]
permissions:
contents: read
concurrency:
group: fixup-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
on: pull_request
jobs:
commit-message-check:
if: github.event.pull_request.draft == false
commit-message-check:
name: Block fixup and squash commits
permissions:
pull-requests: write
name: Block fixup and squash commits
runs-on: ubuntu-latest
runs-on: ubuntu-latest
steps:
- name: Run check
uses: xt0rted/block-autosquash-commits-action@79880c36b4811fe549cfffe20233df88876024e7 # v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Run check
uses: xt0rted/block-autosquash-commits-action@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -12,7 +12,6 @@ on:
- 'composer.lock'
push:
branches:
- main
- master
- stable*
@@ -26,9 +25,9 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.1']
php-versions: ['7.4']
databases: ['sqlite', 'mysql', 'pgsql']
server-versions: ['master']
server-versions: ['stable25']
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
@@ -71,7 +70,7 @@ jobs:
path: apps/${{ env.APP_NAME }}
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@2.23.0
uses: shivammathur/setup-php@2.21.2
with:
php-version: ${{ matrix.php-versions }}
tools: phpunit
@@ -80,7 +79,7 @@ jobs:
- name: Set up PHPUnit
working-directory: apps/${{ env.APP_NAME }}
run: composer i --no-dev
run: composer i
- name: Set up Nextcloud
run: |

View File

@@ -1,62 +0,0 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# Use lint-eslint together with lint-eslint-when-unrelated to make eslint a required check for GitHub actions
# https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks#handling-skipped-but-required-checks
name: Lint
on:
pull_request:
paths:
- '.github/workflows/**'
- 'src/**'
- 'appinfo/info.xml'
- 'package.json'
- 'package-lock.json'
- 'tsconfig.json'
- '.eslintrc.*'
- '.eslintignore'
- '**.js'
- '**.ts'
- '**.vue'
permissions:
contents: read
concurrency:
group: lint-eslint-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
lint:
runs-on: ubuntu-latest
name: eslint
steps:
- name: Checkout
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@1bdcee71fa343c46b18dc6aceffb4cd1e35209c6 # v1.2
id: versions
with:
fallbackNode: '^16'
fallbackNpm: '^7'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # v3
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 dependencies
run: npm ci
- name: Lint
run: npm run lint

View File

@@ -1,39 +0,0 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
name: Lint
on: pull_request
permissions:
contents: read
concurrency:
group: lint-php-cs-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
lint:
runs-on: ubuntu-latest
name: php-cs
steps:
- name: Checkout
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
- name: Set up php
uses: shivammathur/setup-php@1a18b2267f80291a81ca1d33e7c851fe09e7dfc4 # v2
with:
php-version: 8.1
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Install dependencies
run: composer i
- name: Lint
run: composer run cs:check || ( echo 'Please run `composer run cs:fix` to format your code' && exit 1 )

View File

@@ -1,59 +0,0 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
name: Lint
on:
pull_request:
push:
branches:
- main
- master
- stable*
permissions:
contents: read
concurrency:
group: lint-php-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
php-lint:
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: [ "8.0", "8.1", "8.2" ]
name: php-lint
steps:
- name: Checkout
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@1a18b2267f80291a81ca1d33e7c851fe09e7dfc4 # v2
with:
php-version: ${{ matrix.php-versions }}
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Lint
run: composer run lint
summary:
permissions:
contents: none
runs-on: ubuntu-latest
needs: php-lint
if: always()
name: php-lint-summary
steps:
- name: Summary status
run: if ${{ needs.php-lint.result != 'success' && needs.php-lint.result != 'skipped' }}; then exit 1; fi

View File

@@ -1,46 +0,0 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
name: Lint
on: pull_request
permissions:
contents: read
concurrency:
group: lint-stylelint-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
lint:
runs-on: ubuntu-latest
name: stylelint
steps:
- name: Checkout
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@1bdcee71fa343c46b18dc6aceffb4cd1e35209c6 # v1.2
id: versions
with:
fallbackNode: '^16'
fallbackNpm: '^7'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # v3
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 dependencies
run: npm ci
- name: Lint
run: npm run stylelint

88
.github/workflows/lint.yml vendored Normal file
View File

@@ -0,0 +1,88 @@
name: Lint
on:
pull_request:
push:
branches:
- master
- stable*
jobs:
php:
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: ['7.4', '8.0', '8.1']
name: php${{ matrix.php-versions }} lint
steps:
- uses: actions/checkout@v3
- name: Set up php${{ matrix.php-versions }}
uses: shivammathur/setup-php@2.21.2
with:
php-version: ${{ matrix.php-versions }}
coverage: none
- name: Lint
run: composer run lint
php-cs-fixer:
name: php-cs check
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up php
uses: shivammathur/setup-php@2.21.2
with:
php-version: 7.4
coverage: none
- name: Install dependencies
run: composer i
- name: Run coding standards check
run: composer run cs:check
node:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x]
steps:
- uses: actions/checkout@v3
- name: Use node ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Set up npm7
run: npm i -g npm@7
- name: Install dependencies
run: npm ci
- name: ESLint
run: npm run lint
stylelint:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x]
name: stylelint node${{ matrix.node-version }}
steps:
- uses: actions/checkout@v3
- name: Set up node ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Set up npm7
run: npm i -g npm@7
- name: Install dependencies
run: npm ci
- name: Lint
run: npm run stylelint

View File

@@ -25,7 +25,7 @@ jobs:
- name: Set up npm7
run: npm i -g npm@7
- name: Setup PHP
uses: shivammathur/setup-php@2.23.0
uses: shivammathur/setup-php@2.21.2
with:
php-version: '7.4'
tools: composer
@@ -44,14 +44,14 @@ jobs:
git config --local user.name "GitHub Action"
git tag -f nightly
- name: Push tag
uses: juliushaertl/github-push-action@main
uses: juliushaertl/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
tags: true
force: true
- name: Create Release
id: create_release
uses: juliushaertl/action-release@main
uses: juliushaertl/action-release@master
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag: nightly

View File

@@ -21,14 +21,14 @@ env:
jobs:
integration:
runs-on: ubuntu-latest
runs-on: ubuntu-18.04
strategy:
fail-fast: false
matrix:
php-versions: ['8.0', '8.1']
php-versions: ['7.4', '8.0', '8.1']
databases: ['sqlite', 'mysql', 'pgsql']
server-versions: ['master']
server-versions: ['stable25']
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
@@ -70,7 +70,7 @@ jobs:
path: apps/${{ env.APP_NAME }}
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@2.23.0
uses: shivammathur/setup-php@2.21.2
with:
php-version: ${{ matrix.php-versions }}
tools: phpunit

View File

@@ -13,10 +13,6 @@ on:
- main
- stable*
concurrency:
group: psalm-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
static-analysis:
runs-on: ubuntu-latest
@@ -24,15 +20,13 @@ jobs:
name: Nextcloud
steps:
- name: Checkout
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
uses: actions/checkout@v3
- name: Set up php
uses: shivammathur/setup-php@1a18b2267f80291a81ca1d33e7c851fe09e7dfc4 # v2
uses: shivammathur/setup-php@v2
with:
php-version: 8.1
php-version: 7.4
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Install dependencies
run: composer i

View File

@@ -17,24 +17,22 @@ jobs:
strategy:
fail-fast: false
matrix:
branches: ["master", "stable25", "stable24"]
branches: ["master", "stable25", "stable24", "stable23"]
name: update-nextcloud-ocp-${{ matrix.branches }}
steps:
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
- uses: actions/checkout@v3
with:
ref: ${{ matrix.branches }}
submodules: true
- name: Set up php8.1
uses: shivammathur/setup-php@1a18b2267f80291a81ca1d33e7c851fe09e7dfc4 # v2
- name: Set up php7.4
uses: shivammathur/setup-php@v2
with:
php-version: 8.1
php-version: 7.4
extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Composer install
run: composer install
@@ -47,15 +45,14 @@ jobs:
run: |
git clean -f 3rdparty
git clean -f vendor
git clean -f vendor-bin
git checkout 3rdparty vendor vendor-bin
git checkout 3rdparty vendor
continue-on-error: true
- name: Create Pull Request
uses: peter-evans/create-pull-request@18f7dc018cc2cd597073088f7c7591b9d1c02672 # v3
uses: peter-evans/create-pull-request@v3
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
commit-message: "chore(dev-deps): Bump nextcloud/ocp package"
commit-message: Update psalm baseline
committer: GitHub <noreply@github.com>
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
signoff: true

2
.gitignore vendored
View File

@@ -3,11 +3,9 @@ js/
build/
css/style.css
css/vendor.css
cypress/videos/
tests/integration/vendor/
tests/integration/composer.lock
tests/.phpunit.result.cache
vendor/
.php_cs.cache
\.idea/
settings.json

View File

@@ -1,6 +1,6 @@
[main]
host = https://www.transifex.com
lang_map = hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja, bg_BG: bg, cs_CZ: cs, fi_FI: fi
lang_map = bg_BG: bg, cs_CZ: cs, fi_FI: fi, hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja
[o:nextcloud:p:nextcloud:r:deck]
file_filter = translationfiles/<lang>/deck.po

View File

@@ -1,8 +1,33 @@
# Changelog
All notable changes to this project will be documented in this file.
## 1.8.0-beta.1
### Enhancements
## 1.8.3
### Fixed
- Fix component renaming so that acl works on shares again [#4328](https://github.com/nextcloud/deck/pull/4328)
- Permanently delete deck cards marked as deleted after 5 min in a cron job [#4301](https://github.com/nextcloud/deck/pull/4301)
- Dependency updates
## 1.8.2
### Fixed
- minor style fixes [#4201](https://github.com/nextcloud/deck/pull/4201)
- feat: add validators to check values in services [#4174](https://github.com/nextcloud/deck/pull/4174)
- Add integration test for attachment handling on cards [#4179](https://github.com/nextcloud/deck/pull/4179)
- Add missing userId property [#4198](https://github.com/nextcloud/deck/pull/4198)
## 1.8.1
### Fixed
- Fix Duedate activity @nickvergessen [#4155](https://github.com/nextcloud/deck/pull/4155)
## 1.8.0
### Added
- Nextcloud 25 compatibility
- Performance improvements
@@ -14,10 +39,26 @@ All notable changes to this project will be documented in this file.
- Improve filter popover accessibility @juliushaertl [#3820](https://github.com/nextcloud/deck/pull/3820)
- Set ids to skip to content/navigation @juliushaertl [#3924](https://github.com/nextcloud/deck/pull/3924)
- Invert icons properly in dark mode @juliushaertl [#3939](https://github.com/nextcloud/deck/pull/3939)
- Bump dependencies
- Implement card reference widget @eneiluj [#4031](https://github.com/nextcloud/deck/pull/4031)
- Implement new dashboard widget interfaces @eneiluj [#4033](https://github.com/nextcloud/deck/pull/4033)
- Add related resources panel to board sharing tab sidebar @Pytal [#4000](https://github.com/nextcloud/deck/pull/4000)
### Fixed
- Fix sorting stacks [#4116](https://github.com/nextcloud/deck/pull/4116)
- Fix issue with duedate format [#4140](https://github.com/nextcloud/deck/pull/4140)
- Fix missing icon for activity rendering [#4090](https://github.com/nextcloud/deck/pull/4090)
- disables autocomplete on card creation [#4142](https://github.com/nextcloud/deck/pull/4142)
- Set event link also for notifications that get emitted from activities [#4117](https://github.com/nextcloud/deck/pull/4117)
- Fix attachment creator name: show display name @eneiluj [#4036](https://github.com/nextcloud/deck/pull/4036)
- Fix reference provider when caching @eneiluj [#4056](https://github.com/nextcloud/deck/pull/4056)
- Use global import for nextcloud-vue [#4072](https://github.com/nextcloud/deck/pull/4072)
- Disable Create card button while no stack is chosen @icewind1991 [#4014](https://github.com/nextcloud/deck/pull/4014)
- Adjust testing matrix for Nextcloud 25 on stable25 @nickvergessen [#4068](https://github.com/nextcloud/deck/pull/4068)
- Fix Card menu not displaying when description is not set @marcelklehr [#4105](https://github.com/nextcloud/deck/pull/4105)
- Reference widget adjustments for Text [#4075](https://github.com/nextcloud/deck/pull/4075)
- use OCP\Collaboration\Reference\Reference [#4078](https://github.com/nextcloud/deck/pull/4078)
- Cache user membership for circles [#4141](https://github.com/nextcloud/deck/pull/4141)
- set last modified when the card was found. Fixes #3763 @ylebre [#3796](https://github.com/nextcloud/deck/pull/3796)
- Increase file count after sharing @luka-nextcloud [#3682](https://github.com/nextcloud/deck/pull/3682)
- Align Duedate-delete icon properly - fixes nextcloud/deck#3791 @Ben-Ro [#3811](https://github.com/nextcloud/deck/pull/3811)
@@ -462,7 +503,7 @@ Android app team for helping to improve our REST API:
- Fix comment activities on Nextcloud 15
- Fix issues with Edge
- API: Fix numeric types that were returned as strings
- API: Fix If-Modified-Since header parsing
- API: Fix If-Modified-Since header parsing
## 0.5.1 - 2018-12-05
@@ -589,7 +630,7 @@ Android app team for helping to improve our REST API:
### Fixed
- Various frontend fixes
- Fix sidebar drag issues
- Improvements for IE11
- Improvements for IE11
- Fix bug when draging a card to an empty stack
## 0.2.1 - 2017-07-04
@@ -663,7 +704,7 @@ Android app team for helping to improve our REST API:
### Fixed
- Various styling improvements
- Fix problems with MySQL and PostgreSQL
- Fix problems with MySQL and PostgreSQL
- Select first color by default when creating boards
- Fix error when changing board permissions
@@ -671,9 +712,9 @@ Android app team for helping to improve our REST API:
### Added
- Sharing boards with other users
- Create and manage boards
- Create and manage boards
- Sort cards on stacks by drag-and-drop
- Assign labels
- Markdown notes for each card
- Archive cards
- Archive cards

View File

@@ -30,16 +30,6 @@ build: clean-dist install-deps build-js
release: clean-dist install-deps-nodev build-js
lint: lint-js lint-php
lint-js:
npm run lint
npm run stylelint
lint-php:
composer run lint 1>/dev/null
composer run cs:check
build-js: install-deps-js
npm run build

View File

@@ -1,6 +1,6 @@
# Deck
[![Build Status](https://travis-ci.org/nextcloud/deck.svg?branch=main)](https://travis-ci.org/nextcloud/deck) [![CodeCov](https://codecov.io/github/nextcloud/deck/coverage.svg?branch=main)](https://codecov.io/github/nextcloud/deck) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/e403f723f42a4abd93b2cfe36cbd7eee)](https://www.codacy.com/app/juliushaertl/deck?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=nextcloud/deck&amp;utm_campaign=Badge_Grade) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/nextcloud/deck/badges/quality-score.png?b=main)](https://scrutinizer-ci.com/g/nextcloud/deck/?branch=main) [![#nextcloud-deck](https://img.shields.io/badge/IRC-%23nextcloud--deck%20on%20freenode-blue.svg)](https://webchat.freenode.net/?channels=nextcloud-deck)
[![Build Status](https://travis-ci.org/nextcloud/deck.svg?branch=master)](https://travis-ci.org/nextcloud/deck) [![CodeCov](https://codecov.io/github/nextcloud/deck/coverage.svg?branch=master)](https://codecov.io/github/nextcloud/deck) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/e403f723f42a4abd93b2cfe36cbd7eee)](https://www.codacy.com/app/juliushaertl/deck?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=nextcloud/deck&amp;utm_campaign=Badge_Grade) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/nextcloud/deck/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/nextcloud/deck/?branch=master) [![#nextcloud-deck](https://img.shields.io/badge/IRC-%23nextcloud--deck%20on%20freenode-blue.svg)](https://webchat.freenode.net/?channels=nextcloud-deck)
Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.
@@ -20,7 +20,6 @@ Deck is a kanban style organization tool aimed at personal planning and project
### Mobile apps
- [Nextcloud Deck app for Android](https://github.com/stefan-niedermann/nextcloud-deck) - It is available in [F-Droid](https://f-droid.org/de/packages/it.niedermann.nextcloud.deck/) and the [Google Play Store](https://play.google.com/store/apps/details?id=it.niedermann.nextcloud.deck.play)
- [deck NG for Android and iOS](https://github.com/meltzow/deck-ng) - It is available in [Google Play Store](https://play.google.com/store/apps/details?id=net.meltzow.deckng) and [Apple App Store](https://apps.apple.com/us/app/deck-ng/id6443334702)
### 3rd-Party Integrations
@@ -66,18 +65,13 @@ Improvements on Nextcloud server and Deck itself will improve the situation.
## Developing
### Nextcloud environment
You need to setup a [development environment](https://docs.nextcloud.com/server/latest/developer_manual//getting_started/devenv.html) of the current nextcloud version. You can also alternatively install & run the [nextcloud docker container](https://github.com/juliushaertl/nextcloud-docker-dev).
After the finished installation, you can clone the deck project directly in the `/[nextcloud-docker-dev-dir]/workspace/server/apps/` folder.
### PHP
Nothing to prepare, just dig into the code.
### JavaScript
This requires at least Node 16 and npm 7 to be installed.
This requires at least Node 14 and npm 7 to be installed.
Deck requires running a `make build-js` to install npm dependencies and build the JavaScript code using webpack. While developing you can also use `make watch` to rebuild everytime the code changes.

View File

@@ -20,7 +20,7 @@ Your report should include:
- Reproduction steps
A member of the security team will confirm the vulnerability, determine its impact, and develop a fix.
The fix will be applied to the main branch, tested, and packaged in the next security release.
The fix will be applied to the master branch, tested, and packaged in the next security release.
The vulnerability will be publicly announced after the release. Finally, your name will be added
to the [hall of fame](https://hackerone.com/nextcloud/thanks) as a thank you from the entire Nextcloud community. Note our
[threat model](https://nextcloud.com/security/threat-model) to know what is expected behavior.

View File

@@ -16,13 +16,9 @@
- 🚀 Get your project organized
</description>
<version>1.9.0-beta.1</version>
<version>1.8.3</version>
<licence>agpl</licence>
<author>Julius Härtl</author>
<documentation>
<user>https://deck.readthedocs.io/en/latest/User_documentation_en/</user>
<developer>https://deck.readthedocs.io/en/latest/API/</developer>
</documentation>
<namespace>Deck</namespace>
<types>
<dav/>
@@ -38,19 +34,13 @@
<database min-version="9.4">pgsql</database>
<database>sqlite</database>
<database min-version="8.0">mysql</database>
<nextcloud min-version="26" max-version="26"/>
<nextcloud min-version="25" max-version="25"/>
</dependencies>
<background-jobs>
<job>OCA\Deck\Cron\DeleteCron</job>
<job>OCA\Deck\Cron\ScheduledNotifications</job>
<job>OCA\Deck\Cron\CardDescriptionActivity</job>
<job>OCA\Deck\Cron\SessionsCleanup</job>
</background-jobs>
<repair-steps>
<live-migration>
<step>OCA\Deck\Migration\DeletedCircleCleanup</step>
</live-migration>
</repair-steps>
<commands>
<command>OCA\Deck\Command\UserExport</command>
<command>OCA\Deck\Command\BoardImport</command>

View File

@@ -40,7 +40,6 @@ return [
['name' => 'board#deleteAcl', 'url' => '/boards/{boardId}/acl/{aclId}', 'verb' => 'DELETE'],
['name' => 'board#clone', 'url' => '/boards/{boardId}/clone', 'verb' => 'POST'],
['name' => 'board#transferOwner', 'url' => '/boards/{boardId}/transferOwner', 'verb' => 'PUT'],
['name' => 'board#export', 'url' => '/boards/{boardId}/export', 'verb' => 'GET'],
// stacks
['name' => 'stack#index', 'url' => '/stacks/{boardId}', 'verb' => 'GET'],
@@ -150,10 +149,5 @@ return [
['name' => 'overview_api#upcomingCards', 'url' => '/api/v{apiVersion}/overview/upcoming', 'verb' => 'GET'],
['name' => 'search#search', 'url' => '/api/v{apiVersion}/search', 'verb' => 'GET'],
// sessions
['name' => 'Session#create', 'url' => '/api/v{apiVersion}/session/create', 'verb' => 'PUT'],
['name' => 'Session#sync', 'url' => '/api/v{apiVersion}/session/sync', 'verb' => 'POST'],
['name' => 'Session#close', 'url' => '/api/v{apiVersion}/session/close', 'verb' => 'POST'],
]
];

View File

@@ -17,9 +17,9 @@
"phpunit/phpunit": "^9",
"nextcloud/coding-standard": "^1.0.0",
"symfony/event-dispatcher": "^4.0",
"vimeo/psalm": "^5.4",
"vimeo/psalm": "^4.3",
"php-parallel-lint/php-parallel-lint": "^1.2",
"nextcloud/ocp": "dev-master"
"nextcloud/ocp": "dev-stable25"
},
"config": {
"optimize-autoloader": true,
@@ -28,7 +28,7 @@
"composer/package-versions-deprecated": true
},
"platform": {
"php": "8.0"
"php": "7.4"
}
},
"scripts": {
@@ -42,8 +42,8 @@
"@test:unit",
"@test:integration"
],
"test:unit": "vendor/bin/phpunit -c tests/phpunit.xml",
"test:integration": "vendor/bin/phpunit -c tests/phpunit.integration.xml && cd tests/integration && ./run.sh"
"test:unit": "phpunit -c tests/phpunit.xml",
"test:integration": "phpunit -c tests/phpunit.integration.xml && cd tests/integration && ./run.sh"
},
"autoload-dev": {
"psr-4": {

612
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,16 +1,17 @@
const { defineConfig } = require('cypress')
module.exports = defineConfig({
projectId: '1s7wkc',
viewportWidth: 1280,
viewportHeight: 720,
e2e: {
// We've imported your old cypress plugins here.
// You may want to clean this up later by importing these.
setupNodeEvents(on, config) {
return require('./cypress/plugins/index.js')(on, config)
},
baseUrl: 'http://nextcloud.local/index.php',
specPattern: 'cypress/e2e/**/*.{js,jsx,ts,tsx}',
},
projectId: '1s7wkc',
viewportWidth: 1280,
viewportHeight: 720,
e2e: {
// We've imported your old cypress plugins here.
// You may want to clean this up later by importing these.
setupNodeEvents(on, config) {
return require('./cypress/plugins/index.js')(on, config)
},
baseUrl: 'http://nextcloud.local/index.php',
experimentalSessionAndOrigin: true,
specPattern: 'cypress/e2e/**/*.{js,jsx,ts,tsx}',
},
})

View File

@@ -1,5 +0,0 @@
module.exports = {
extends: [
'plugin:cypress/recommended',
],
}

View File

@@ -1,17 +1,15 @@
import { randUser } from '../utils/index.js'
const user = randUser()
const recipient = randUser()
import { randHash } from '../utils'
const randUser = randHash()
describe('Board', function() {
const password = 'pass123'
before(function() {
cy.createUser(user)
cy.createUser(recipient)
cy.nextcloudCreateUser(randUser, password)
})
beforeEach(function() {
cy.login(user)
cy.visit('/apps/deck')
cy.login(randUser, password)
})
it('Can create a board', function() {
@@ -23,6 +21,7 @@ describe('Board', function() {
}).as('createBoardRequest')
// Click "Add board"
cy.openLeftSidebar()
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
.eq(3).find('a').first().click({ force: true })
@@ -39,18 +38,4 @@ describe('Board', function() {
cy.get('.app-navigation__list .app-navigation-entry__children .app-navigation-entry')
.contains(board).should('be.visible')
})
it('Shows and hides the navigation', () => {
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
.contains('Upcoming cards')
.should('be.visible')
cy.openLeftSidebar()
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
.contains('Upcoming cards')
.should('not.be.visible')
cy.openLeftSidebar()
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
.contains('Upcoming cards')
.should('be.visible')
})
})

View File

@@ -1,29 +1,38 @@
import { randUser } from '../utils/index.js'
import { sampleBoard } from '../utils/sampleBoard'
import { randHash } from '../utils'
const randUser = randHash()
const user = randUser()
const boardData = sampleBoard()
const testBoardData = {
title: 'MyBoardTest',
color: '00ff00',
stacks: [
{
title: 'TestList',
cards: [
{
title: 'Hello world',
},
],
},
],
}
describe('Card', function() {
let boardId
before(function() {
cy.createUser(user)
cy.login(user)
cy.nextcloudCreateUser(randUser, randUser)
cy.createExampleBoard({
user,
board: boardData,
}).then((board) => {
boardId = board.id
user: randUser,
password: randUser,
board: testBoardData,
})
})
beforeEach(function() {
cy.login(user)
cy.visit(`/apps/deck/#/board/${boardId}`)
cy.login(randUser, randUser)
})
it('Can show card details modal', function() {
cy.getNavigationEntry(boardData.title)
cy.openLeftSidebar()
cy.getNavigationEntry(testBoardData.title)
.first().click({ force: true })
cy.get('.board .stack').eq(0).within(() => {
@@ -37,7 +46,8 @@ describe('Card', function() {
it('Can add a card', function() {
const newCardTitle = 'Write some cypress tests'
cy.getNavigationEntry(boardData.title)
cy.openLeftSidebar()
cy.getNavigationEntry(testBoardData.title)
.first().click({ force: true })
cy.get('.board .stack').eq(0).within(() => {

View File

@@ -1,25 +1,27 @@
import { randUser } from '../utils/index.js'
const user = randUser()
import { randHash } from '../utils'
const randUser = randHash()
describe('Deck dashboard', function() {
const password = 'pass123'
before(function() {
cy.createUser(user)
cy.nextcloudCreateUser(randUser, password)
})
beforeEach(function() {
cy.login(user)
cy.visit('/apps/deck')
cy.login(randUser, password)
})
it('Can show the right title on the dashboard', function() {
cy.get('.board-title h2')
.should('have.length', 1).first()
.should('have.text', 'Upcoming cards')
.should('have.length', 1).first()
.should('have.text', 'Upcoming cards')
})
it('Can see the default "Personal Board" created for user by default', function() {
const defaultBoard = 'Personal'
cy.openLeftSidebar()
cy.get('.app-navigation-entry-wrapper[icon=icon-deck]')
.find('ul.app-navigation-entry__children .app-navigation-entry:contains(' + defaultBoard + ')')
.first()

View File

@@ -1,50 +0,0 @@
import { randUser } from '../utils/index.js'
import { sampleBoard } from '../utils/sampleBoard'
const user = randUser()
const recipient = randUser()
describe('Board', function() {
before(function() {
cy.createUser(user)
cy.createUser(recipient)
})
beforeEach(function() {
cy.login(user)
})
it('Share a board to a user', function() {
const board = sampleBoard('Read only board')
cy.createExampleBoard({ user, board }).then((board) => {
const boardId = board.id
cy.visit(`/apps/deck/#/board/${boardId}`)
cy.get('.board-title').contains(board.title)
cy.shareBoardWithUi(recipient.userId)
cy.login(recipient)
cy.visit(`/apps/deck/#/board/${boardId}`)
cy.get('.board-title').contains(board.title)
cy.get('.button-vue[aria-label*="Add card"]')
.should('not.exist')
})
})
it('Share a board to a user as writable', function() {
const board = sampleBoard('Editable board')
cy.createExampleBoard({ user, board }).then((board) => {
const boardId = board.id
cy.visit(`/apps/deck/#/board/${boardId}`)
cy.get('.board-title').contains(board.title)
cy.shareBoardWithUi(recipient.userId)
cy.get(`[data-cy="acl-participant:${recipient.userId}"]`).find('[data-cy="action:permission-edit"]').click()
cy.login(recipient)
cy.visit(`/apps/deck/#/board/${boardId}`)
cy.get('.board-title').contains(board.title)
cy.get('.button-vue[aria-label*="Add card"]')
.first().click()
})
})
})

View File

@@ -1,68 +1,30 @@
import { randUser } from '../utils/index.js'
const user = randUser()
const boardTitle = 'TestBoard'
const testBoardData = {
title: boardTitle,
stacks: [
{ title: 'Existing Stack1' },
{ title: 'Existing Stack2' },
],
}
import { randHash } from '../utils'
const randUser = randHash()
describe('Stack', function() {
const board = 'TestBoard'
const password = 'pass123'
const stack = 'List 1'
before(function() {
cy.createUser(user)
cy.login(user)
cy.createExampleBoard({
user,
board: testBoardData,
})
cy.nextcloudCreateUser(randUser, password)
cy.deckCreateBoard({ user: randUser, password }, board)
})
beforeEach(function() {
cy.login(user)
cy.visit('/apps/deck')
cy.openLeftSidebar()
cy.getNavigationEntry(boardTitle)
.click({ force: true })
cy.logout()
cy.login(randUser, password)
})
it('Can create a stack', function() {
cy.openLeftSidebar()
cy.getNavigationEntry(board)
.click({ force: true })
cy.get('#stack-add button').first().click()
cy.focused().type('List 1')
cy.get('#stack-add form input#new-stack-input-main').type(stack)
cy.get('#stack-add form input[type=submit]').first().click()
cy.contains('List 1').should('be.visible')
})
it('Can edit a stack title', function() {
cy.contains('Existing Stack1')
cy.get('[data-cy-stack="Existing Stack1"]').within(() => {
cy.contains('Existing Stack1').click()
cy.focused().type(' renamed')
cy.get('[data-cy="editStackTitleForm"] input[type="submit"]').click()
})
cy.contains('Existing Stack1 renamed').should('be.visible')
})
it('Can abort a stack title edit via esc', function() {
cy.contains('Existing Stack2').click()
cy.focused().type(' with a new title, maybe?')
cy.focused().type('{esc}')
cy.contains('Existing Stack2').should('be.visible')
cy.contains('Existing Stack2 with a new title, maybe?').should('not.exist')
})
it('Can abort a stack title edit via click outside', function() {
cy.contains('Existing Stack2').click()
cy.focused().type(' with a new title, maybe?')
cy.get('[data-cy-stack="Existing Stack2"]').click('bottom')
cy.contains('Existing Stack2').should('be.visible')
cy.contains('Existing Stack2 with a new title, maybe?').should('not.exist')
cy.get('.board .stack').eq(0).contains(stack).should('be.visible')
})
})

View File

@@ -20,13 +20,61 @@
*
*/
import { addCommands } from '@nextcloud/cypress'
addCommands()
const url = Cypress.config('baseUrl').replace(/\/index.php\/?$/g, '')
Cypress.env('baseUrl', url)
Cypress.Commands.add('login', (user, password, route = '/apps/deck/') => {
const session = `${user}-${Date.now()}`
cy.session(session, function() {
cy.visit(route)
cy.get('input[name=user]').type(user)
cy.get('input[name=password]').type(password)
cy.get('form[name=login] [type=submit]').click()
cy.url().should('include', route)
})
cy.visit(route)
})
Cypress.Commands.add('logout', (route = '/') => {
cy.session('_guest', function() {})
})
Cypress.Commands.add('nextcloudCreateUser', (user, password) => {
cy.clearCookies()
cy.request({
method: 'POST',
url: `${Cypress.env('baseUrl')}/ocs/v1.php/cloud/users?format=json`,
form: true,
body: {
userid: user,
password,
},
auth: { user: 'admin', pass: 'admin' },
headers: {
'OCS-ApiRequest': 'true',
'Content-Type': 'application/x-www-form-urlencoded',
},
}).then((response) => {
cy.log(`Created user ${user}`, response.status)
})
})
Cypress.Commands.add('nextcloudUpdateUser', (user, password, key, value) => {
cy.request({
method: 'PUT',
url: `${Cypress.env('baseUrl')}/ocs/v2.php/cloud/users/${user}`,
form: true,
body: { key, value },
auth: { user, pass: password },
headers: {
'OCS-ApiRequest': 'true',
'Content-Type': 'application/x-www-form-urlencoded',
},
}).then((response) => {
cy.log(`Updated user ${user} ${key} to ${value}`, response.status)
})
})
Cypress.Commands.add('openLeftSidebar', () => {
cy.get('.app-navigation button.app-navigation-toggle').click()
})
@@ -63,15 +111,14 @@ Cypress.Commands.add('deckCreateList', ({ user, password }, title) => {
cy.get('#stack-add form input[type=submit]').first().click()
})
Cypress.Commands.add('createExampleBoard', ({ user, board }) => {
const auth = {
user: user.userId,
password: user.password,
}
Cypress.Commands.add('createExampleBoard', ({ user, password, board }) => {
cy.request({
method: 'POST',
url: `${Cypress.env('baseUrl')}/index.php/apps/deck/api/v1.0/boards`,
auth,
auth: {
user,
password,
},
body: { title: board.title, color: board.color ?? 'ff0000' },
}).then((boardResponse) => {
expect(boardResponse.status).to.eq(200)
@@ -81,7 +128,10 @@ Cypress.Commands.add('createExampleBoard', ({ user, board }) => {
cy.request({
method: 'POST',
url: `${Cypress.env('baseUrl')}/index.php/apps/deck/api/v1.0/boards/${boardData.id}/stacks`,
auth,
auth: {
user,
password,
},
body: { title: stack.title, order: 0 },
}).then((stackResponse) => {
const stackData = stackResponse.body
@@ -90,13 +140,15 @@ Cypress.Commands.add('createExampleBoard', ({ user, board }) => {
cy.request({
method: 'POST',
url: `${Cypress.env('baseUrl')}/index.php/apps/deck/api/v1.0/boards/${boardData.id}/stacks/${stackData.id}/cards`,
auth,
auth: {
user,
password,
},
body: { title: card.title },
})
}
})
}
cy.wrap(boardData)
})
})
@@ -105,13 +157,3 @@ Cypress.Commands.add('getNavigationEntry', (boardTitle) => {
.find('ul.app-navigation-entry__children .app-navigation-entry:contains(' + boardTitle + ')')
.find('a.app-navigation-entry-link')
})
Cypress.Commands.add('shareBoardWithUi', (userId) => {
cy.get('[aria-label="Open details"]').click()
cy.get('.app-sidebar').should('be.visible')
cy.get('.multiselect__input').type(`${userId}`)
cy.get('.multiselect__content .multiselect__element').first().contains(userId)
cy.get('.multiselect__input').type('{enter}')
cy.get('.shareWithList').contains(userId)
})

View File

@@ -1,12 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>Components App</title>
</head>
<body>
<div data-cy-root></div>
</body>
</html>

View File

@@ -1,27 +0,0 @@
// ***********************************************************
// This example support/component.js is processed and
// loaded automatically before your test files.
//
// This is a great place to put global configuration and
// behavior that modifies Cypress.
//
// You can change the location of this file or turn off
// automatically serving support files with the
// 'supportFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/configuration
// ***********************************************************
// Import commands.js using ES2015 syntax:
import './commands'
// Alternatively you can use CommonJS syntax:
// require('./commands')
import { mount } from 'cypress/vue2'
Cypress.Commands.add('mount', mount)
// Example use:
// cy.mount(MyComponent)

View File

@@ -14,7 +14,7 @@
// ***********************************************************
// Import commands.js using ES2015 syntax:
import './commands.js'
import './commands'
// Alternatively you can use CommonJS syntax:
// require('./commands')

View File

@@ -1,4 +1 @@
import { User } from '@nextcloud/cypress'
export const randHash = () => Math.random().toString(36).replace(/[^a-z]+/g, '').slice(0, 10)
export const randUser = () => new User(randHash(), randHash())

View File

@@ -1,37 +0,0 @@
/*
* @copyright Copyright (c) 2022 Julius Härtl <jus@bitgrid.net>
*
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
export const sampleBoard = (title = 'MyTestBoard') => {
return {
title: title,
color: '00ff00',
stacks: [
{
title: 'TestList',
cards: [
{
title: 'Hello world',
},
],
},
],
}
}

View File

@@ -1066,7 +1066,6 @@ Deck stores user and app configuration values globally and per board. The GET en
| --- | --- |
| calendar | Determines if the calendar/tasks integration through the CalDAV backend is enabled for the user (boolean) |
| cardDetailsInModal | Determines if the bigger view is used (boolean) |
| cardIdBadge | Determines if the ID badges are displayed on cards (boolean) |
| groupLimit | Determines if creating new boards is limited to certain groups of the instance. The resulting output is an array of group objects with the id and the displayname (Admin only)|
```
@@ -1080,7 +1079,6 @@ Deck stores user and app configuration values globally and per board. The GET en
"data": {
"calendar": true,
"cardDetailsInModal": true,
"cardIdBadge": true,
"groupLimit": [
{
"id": "admin",
@@ -1111,7 +1109,6 @@ Deck stores user and app configuration values globally and per board. The GET en
| notify-due | `off`, `assigned` or `all` |
| calendar | Boolean |
| cardDetailsInModal | Boolean |
| cardIdBadge | Boolean |
#### Example request
@@ -1394,110 +1391,3 @@ A bad request response is returned if invalid input values are provided. The res
A not found response might be returned if:
- The card for the given cardId could not be found
- The comment could not be found
## Sessions
### PUT /session/create - creates a new session
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | ---------------------------------------------------- |
| boardId | Integer | The id of the opened board |
```
curl -X PUT 'https://admin:admin@nextcloud/ocs/v2.php/apps/deck/api/v1.0/session/create' \
-H 'Accept: application/json' -H 'OCS-APIRequest: true' \
-H 'Content-Type: application/json;charset=utf-8' \
--data '{"boardId":1}'
```
#### Response
##### 200 Success
```json
{
"ocs": {
"meta": {
"status": "ok",
"statuscode": 200,
"message": "OK"
},
"data": {
"token": "+zcJHf4rC6dobVSbuNa3delkCSfTW8OvYWTyLFvSpIv80FjtgLIj0ARlxspsazNQ"
}
}
}
```
### POST /session/sync - notifies the server, that the session is still open
#### Request body
| Parameter | Type | Description |
| --------- | ------- | ---------------------------------------------------- |
| boardId | Integer | The id of the opened board |
| token | String | The session token from the /sessions/create response |
```
curl -X POST 'https://admin:admin@nextcloud/ocs/v2.php/apps/deck/api/v1.0/session/create' \
-H 'Accept: application/json' -H 'OCS-APIRequest: true' \
-H 'Content-Type: application/json;charset=utf-8' \
--data '{"boardId":1, "token":"X3DyyoFslArF0t0NBZXzZXzcy8feoX/OEytSNXZtPg9TpUgO5wrkJ38IW3T/FfpV"}'
```
#### Response
##### 200 Success
```json
{
"ocs": {
"meta": {
"status": "ok",
"statuscode": 200,
"message": "OK"
},
"data": []
}
}
```
##### 404 Not Found
the provided token is invalid or expired
### POST /session/close - closes the session
#### Request body
| Parameter | Type | Description |
| --------- | ------- | ---------------------------------------------------- |
| boardId | Integer | The id of the opened board |
| token | String | The session token from the /sessions/create response |
```
curl -X POST 'https://admin:admin@nextcloud/ocs/v2.php/apps/deck/api/v1.0/session/close' \
-H 'Accept: application/json' -H 'OCS-APIRequest: true' \
-H 'Content-Type: application/json;charset=utf-8' \
--data '{"boardId":1, "token":"X3DyyoFslArF0t0NBZXzZXzcy8feoX/OEytSNXZtPg9TpUgO5wrkJ38IW3T/FfpV"}'
```
#### Response
##### 200 Success
```json
{
"ocs": {
"meta": {
"status": "ok",
"statuscode": 200,
"message": "OK"
},
"data": []
}
}
```

View File

@@ -90,7 +90,7 @@ Steps:
* Create the configuration file
* Execute the import informing the import file path, data file and source as `Trello JSON`
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/main/lib/Service/Importer/fixtures/config-trelloJson-schema.json) for import `Trello JSON`
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/master/lib/Service/Importer/fixtures/config-trelloJson-schema.json) for import `Trello JSON`
Example configuration file:
```json
@@ -120,7 +120,7 @@ https://api.trello.com/1/members/me/boards?key={yourKey}&token={yourToken}&field
This ID you will use in the configuration file in the `board` property
* Create the configuration file
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/main/lib/Service/Importer/fixtures/config-trelloApi-schema.json) for import `Trello JSON`
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/master/lib/Service/Importer/fixtures/config-trelloApi-schema.json) for import `Trello JSON`
Example configuration file:
```json

View File

@@ -153,7 +153,6 @@ OC.L10N.register(
"Toggle compact mode" : "Превключване на компактен режим",
"Open details" : "Отваряне на подробности",
"Details" : "Подробности",
"Currently present people" : "Хора присъстващи в момента",
"Loading board" : "Зареждане на табло",
"No lists available" : "Няма налична списъци.",
"Create a new list to add cards to this board" : "Създайте нов списък, за да добавите карти към това табло",
@@ -182,7 +181,6 @@ OC.L10N.register(
"Transfer" : "Прехвърляне",
"The board has been transferred to {user}" : "Таблото беше прехвърлено на {user}",
"Failed to transfer the board to {user}" : "Неуспешно прехвърляне на таблото на {user}",
"Edit list title" : "Редактиране на заглавието на списъка",
"Archive all cards" : "Архивира всички карти",
"Unarchive all cards" : "Разархивиране на всички карти",
"Delete list" : "Изтрива списък",
@@ -272,7 +270,6 @@ OC.L10N.register(
"Clone board" : " Клониране на табло",
"Unarchive board" : "Разархивиране натабло",
"Archive board" : "Архивиране на табло",
"Export board" : "Експортиране на табло",
"Turn on due date reminders" : "Включва напомнянията за краен срок",
"Turn off due date reminders" : "Изключва напомнянията за краен срок",
"Due date reminders" : " Напомняния за краен срок",

View File

@@ -151,7 +151,6 @@
"Toggle compact mode" : "Превключване на компактен режим",
"Open details" : "Отваряне на подробности",
"Details" : "Подробности",
"Currently present people" : "Хора присъстващи в момента",
"Loading board" : "Зареждане на табло",
"No lists available" : "Няма налична списъци.",
"Create a new list to add cards to this board" : "Създайте нов списък, за да добавите карти към това табло",
@@ -180,7 +179,6 @@
"Transfer" : "Прехвърляне",
"The board has been transferred to {user}" : "Таблото беше прехвърлено на {user}",
"Failed to transfer the board to {user}" : "Неуспешно прехвърляне на таблото на {user}",
"Edit list title" : "Редактиране на заглавието на списъка",
"Archive all cards" : "Архивира всички карти",
"Unarchive all cards" : "Разархивиране на всички карти",
"Delete list" : "Изтрива списък",
@@ -270,7 +268,6 @@
"Clone board" : " Клониране на табло",
"Unarchive board" : "Разархивиране натабло",
"Archive board" : "Архивиране на табло",
"Export board" : "Експортиране на табло",
"Turn on due date reminders" : "Включва напомнянията за краен срок",
"Turn off due date reminders" : "Изключва напомнянията за краен срок",
"Due date reminders" : " Напомняния за краен срок",

View File

@@ -153,7 +153,6 @@ OC.L10N.register(
"Toggle compact mode" : "Vyp/zap. kompaktní režim",
"Open details" : "Otevřít podorobnosti",
"Details" : "Podrobnosti",
"Currently present people" : "Nyní přítomní lidé",
"Loading board" : "Načítání tabule",
"No lists available" : "Nejsou k dispozici žádné seznamy",
"Create a new list to add cards to this board" : "Pro přidání karet na tuto tabuli vytvořte nový seznam",

View File

@@ -151,7 +151,6 @@
"Toggle compact mode" : "Vyp/zap. kompaktní režim",
"Open details" : "Otevřít podorobnosti",
"Details" : "Podrobnosti",
"Currently present people" : "Nyní přítomní lidé",
"Loading board" : "Načítání tabule",
"No lists available" : "Nejsou k dispozici žádné seznamy",
"Create a new list to add cards to this board" : "Pro přidání karet na tuto tabuli vytvořte nový seznam",

View File

@@ -153,7 +153,6 @@ OC.L10N.register(
"Toggle compact mode" : "Kompaktmodus umschalten",
"Open details" : "Details öffnen",
"Details" : "Details",
"Currently present people" : "Aktuell Anwesende",
"Loading board" : "Lade Board",
"No lists available" : "Keine Listen verfügbar",
"Create a new list to add cards to this board" : "Erstelle eine neue Liste, um diesem Board Karten hinzuzufügen",
@@ -165,7 +164,7 @@ OC.L10N.register(
"Deleted lists" : "Gelöschte Listen",
"Undo" : "Rückgängig",
"Deleted cards" : "Gelöschte Karten",
"Share board with a user, group or circle …" : "Board mit Benutzer, Gruppe oder Kreis teilen …",
"Share board with a user, group or circle …" : "Board mit Benutzer, Gruppe oder Kreis teilen…",
"Searching for users, groups and circles …" : "Suche nach Benutzern, Gruppen und Kreisen …",
"No participants found" : "Keine Teilnehmer gefunden",
"Board owner" : "Board-Besitzer",
@@ -182,7 +181,6 @@ OC.L10N.register(
"Transfer" : "Übertragen",
"The board has been transferred to {user}" : "Das Board wurde an {user} übertragen",
"Failed to transfer the board to {user}" : "Das Board konnte nicht an {user} übertragen werden",
"Edit list title" : "Listentitel bearbeiten",
"Archive all cards" : "Alle Karten archivieren",
"Unarchive all cards" : "Alle Karten dearchivieren",
"Delete list" : "Liste löschen",
@@ -237,7 +235,7 @@ OC.L10N.register(
"Update" : "Aktualisieren",
"Description" : "Beschreibung",
"(Unsaved)" : "(nicht gespeichert)",
"(Saving…)" : "(Speichere …)",
"(Saving…)" : "(Speichere…)",
"Formatting help" : "Hilfe zur Formatierung",
"Edit description" : "Beschreibung bearbeiten",
"View description" : "Beschreibung anzeigen",
@@ -263,7 +261,6 @@ OC.L10N.register(
"Shared with you" : "Mit dir geteilt",
"Deck settings" : "Deck-Einstellungen",
"Use bigger card view" : "Größere Kartenansicht verwenden",
"Show card ID badge" : "Abzeichen mit Karten-ID zeigen",
"Show boards in calendar/tasks" : "Board in Kalender/Aufgaben anzeigen",
"Limit deck usage of groups" : "Nutzung auf Gruppen einschränken",
"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." : "Wenn du Deck einschränkst, können Benutzer, die nicht zu diesen Gruppen gehören, keine eigenen Boards erstellen. Die Benutzer können weiterhin an Boards arbeiten, die für sie freigegeben wurden.",
@@ -272,7 +269,6 @@ OC.L10N.register(
"Clone board" : "Board klonen",
"Unarchive board" : "Board dearchivieren",
"Archive board" : "Board archivieren",
"Export board" : "Board exportieren",
"Turn on due date reminders" : "Fälligkeitserinnerungen einschalten",
"Turn off due date reminders" : "Fälligkeitserinnerungen ausschalten",
"Due date reminders" : "Fälligkeitserinnerungen",

View File

@@ -151,7 +151,6 @@
"Toggle compact mode" : "Kompaktmodus umschalten",
"Open details" : "Details öffnen",
"Details" : "Details",
"Currently present people" : "Aktuell Anwesende",
"Loading board" : "Lade Board",
"No lists available" : "Keine Listen verfügbar",
"Create a new list to add cards to this board" : "Erstelle eine neue Liste, um diesem Board Karten hinzuzufügen",
@@ -163,7 +162,7 @@
"Deleted lists" : "Gelöschte Listen",
"Undo" : "Rückgängig",
"Deleted cards" : "Gelöschte Karten",
"Share board with a user, group or circle …" : "Board mit Benutzer, Gruppe oder Kreis teilen …",
"Share board with a user, group or circle …" : "Board mit Benutzer, Gruppe oder Kreis teilen…",
"Searching for users, groups and circles …" : "Suche nach Benutzern, Gruppen und Kreisen …",
"No participants found" : "Keine Teilnehmer gefunden",
"Board owner" : "Board-Besitzer",
@@ -180,7 +179,6 @@
"Transfer" : "Übertragen",
"The board has been transferred to {user}" : "Das Board wurde an {user} übertragen",
"Failed to transfer the board to {user}" : "Das Board konnte nicht an {user} übertragen werden",
"Edit list title" : "Listentitel bearbeiten",
"Archive all cards" : "Alle Karten archivieren",
"Unarchive all cards" : "Alle Karten dearchivieren",
"Delete list" : "Liste löschen",
@@ -235,7 +233,7 @@
"Update" : "Aktualisieren",
"Description" : "Beschreibung",
"(Unsaved)" : "(nicht gespeichert)",
"(Saving…)" : "(Speichere …)",
"(Saving…)" : "(Speichere…)",
"Formatting help" : "Hilfe zur Formatierung",
"Edit description" : "Beschreibung bearbeiten",
"View description" : "Beschreibung anzeigen",
@@ -261,7 +259,6 @@
"Shared with you" : "Mit dir geteilt",
"Deck settings" : "Deck-Einstellungen",
"Use bigger card view" : "Größere Kartenansicht verwenden",
"Show card ID badge" : "Abzeichen mit Karten-ID zeigen",
"Show boards in calendar/tasks" : "Board in Kalender/Aufgaben anzeigen",
"Limit deck usage of groups" : "Nutzung auf Gruppen einschränken",
"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." : "Wenn du Deck einschränkst, können Benutzer, die nicht zu diesen Gruppen gehören, keine eigenen Boards erstellen. Die Benutzer können weiterhin an Boards arbeiten, die für sie freigegeben wurden.",
@@ -270,7 +267,6 @@
"Clone board" : "Board klonen",
"Unarchive board" : "Board dearchivieren",
"Archive board" : "Board archivieren",
"Export board" : "Board exportieren",
"Turn on due date reminders" : "Fälligkeitserinnerungen einschalten",
"Turn off due date reminders" : "Fälligkeitserinnerungen ausschalten",
"Due date reminders" : "Fälligkeitserinnerungen",

View File

@@ -153,7 +153,6 @@ OC.L10N.register(
"Toggle compact mode" : "Kompaktmodus umschalten",
"Open details" : "Details öffnen",
"Details" : "Details",
"Currently present people" : "Aktuell Anwesende",
"Loading board" : "Lade Board",
"No lists available" : "Keine Listen verfügbar",
"Create a new list to add cards to this board" : "Erstellen Sie eine neue Liste, um diesem Board Karten hinzuzufügen",

View File

@@ -151,7 +151,6 @@
"Toggle compact mode" : "Kompaktmodus umschalten",
"Open details" : "Details öffnen",
"Details" : "Details",
"Currently present people" : "Aktuell Anwesende",
"Loading board" : "Lade Board",
"No lists available" : "Keine Listen verfügbar",
"Create a new list to add cards to this board" : "Erstellen Sie eine neue Liste, um diesem Board Karten hinzuzufügen",

View File

@@ -153,7 +153,6 @@ OC.L10N.register(
"Toggle compact mode" : "Toggle compact mode",
"Open details" : "Open details",
"Details" : "Details",
"Currently present people" : "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",

View File

@@ -151,7 +151,6 @@
"Toggle compact mode" : "Toggle compact mode",
"Open details" : "Open details",
"Details" : "Details",
"Currently present people" : "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",

View File

@@ -153,7 +153,6 @@ OC.L10N.register(
"Toggle compact mode" : "Mostrar/ocultar modo compacto",
"Open details" : "Abrir detalles",
"Details" : "Detalles",
"Currently present people" : "Personas presentes actualmente",
"Loading board" : "Cargando tablero",
"No lists available" : "No hay listas disponibles",
"Create a new list to add cards to this board" : "Crea una lista nueva para añadir tarjetas a este tablero",

View File

@@ -151,7 +151,6 @@
"Toggle compact mode" : "Mostrar/ocultar modo compacto",
"Open details" : "Abrir detalles",
"Details" : "Detalles",
"Currently present people" : "Personas presentes actualmente",
"Loading board" : "Cargando tablero",
"No lists available" : "No hay listas disponibles",
"Create a new list to add cards to this board" : "Crea una lista nueva para añadir tarjetas a este tablero",

View File

@@ -124,7 +124,7 @@ OC.L10N.register(
"Create card" : "Sortu txartela",
"Select a card" : "Hautatu txartel bat",
"Select the card to link to a project" : "Hautatu proiektu bati estekatzeko txartela",
"Link to card" : "Lotu txartelera",
"Link to card" : "Estekatu txartelera",
"File already exists" : "Badago izen bereko fitxategi bat",
"A file with the name {filename} already exists." : "{filename} izeneko fitxategia existitzen da dagoeneko.",
"Do you want to overwrite it?" : "Gainidatzi nahi duzu?",
@@ -153,7 +153,6 @@ OC.L10N.register(
"Toggle compact mode" : "Txandakatu modu trinkoa",
"Open details" : "Ireki xehetasunak",
"Details" : "Xehetasunak",
"Currently present people" : "Unean dauden pertsonak",
"Loading board" : "Taula kargatzen",
"No lists available" : "Ez dago zerrendarik eskuragarri",
"Create a new list to add cards to this board" : "Sortu zerrenda berria, taula honetan txartelak gehitzeko",
@@ -182,7 +181,6 @@ OC.L10N.register(
"Transfer" : "Transferitu",
"The board has been transferred to {user}" : "Arbela {user}-(a)ri transferitu zaio",
"Failed to transfer the board to {user}" : "Ezin izan zaio transferitu arbela {use}-(a)ri",
"Edit list title" : "Editatu zerrendaren izenburua",
"Archive all cards" : "Artxibatu txartel guztiak",
"Unarchive all cards" : "Berreskuratu txartel guztiak artxibotik",
"Delete list" : "Zerrenda ezabatu",
@@ -272,7 +270,6 @@ OC.L10N.register(
"Clone board" : "Klonatu taula",
"Unarchive board" : "Atera taula artxibotik",
"Archive board" : "Artxibatu taula",
"Export board" : "Esportatu taula",
"Turn on due date reminders" : "Aktibatu epemugako abisuak",
"Turn off due date reminders" : "Desaktibatu epemugako abisuak",
"Due date reminders" : "Epemugako abisuak",

View File

@@ -122,7 +122,7 @@
"Create card" : "Sortu txartela",
"Select a card" : "Hautatu txartel bat",
"Select the card to link to a project" : "Hautatu proiektu bati estekatzeko txartela",
"Link to card" : "Lotu txartelera",
"Link to card" : "Estekatu txartelera",
"File already exists" : "Badago izen bereko fitxategi bat",
"A file with the name {filename} already exists." : "{filename} izeneko fitxategia existitzen da dagoeneko.",
"Do you want to overwrite it?" : "Gainidatzi nahi duzu?",
@@ -151,7 +151,6 @@
"Toggle compact mode" : "Txandakatu modu trinkoa",
"Open details" : "Ireki xehetasunak",
"Details" : "Xehetasunak",
"Currently present people" : "Unean dauden pertsonak",
"Loading board" : "Taula kargatzen",
"No lists available" : "Ez dago zerrendarik eskuragarri",
"Create a new list to add cards to this board" : "Sortu zerrenda berria, taula honetan txartelak gehitzeko",
@@ -180,7 +179,6 @@
"Transfer" : "Transferitu",
"The board has been transferred to {user}" : "Arbela {user}-(a)ri transferitu zaio",
"Failed to transfer the board to {user}" : "Ezin izan zaio transferitu arbela {use}-(a)ri",
"Edit list title" : "Editatu zerrendaren izenburua",
"Archive all cards" : "Artxibatu txartel guztiak",
"Unarchive all cards" : "Berreskuratu txartel guztiak artxibotik",
"Delete list" : "Zerrenda ezabatu",
@@ -270,7 +268,6 @@
"Clone board" : "Klonatu taula",
"Unarchive board" : "Atera taula artxibotik",
"Archive board" : "Artxibatu taula",
"Export board" : "Esportatu taula",
"Turn on due date reminders" : "Aktibatu epemugako abisuak",
"Turn off due date reminders" : "Desaktibatu epemugako abisuak",
"Due date reminders" : "Epemugako abisuak",

View File

@@ -153,7 +153,6 @@ OC.L10N.register(
"Toggle compact mode" : "Activer/Désactiver l'affichage compact",
"Open details" : "Ouvrir les détails",
"Details" : "Détails",
"Currently present people" : "Personnes actuellement présentes",
"Loading board" : "Chargement du tableau…",
"No lists available" : "Aucune liste disponible",
"Create a new list to add cards to this board" : "Créer une nouvelle liste pour ajouter des cartes à ce tableau",
@@ -182,7 +181,6 @@ OC.L10N.register(
"Transfer" : "Transférer",
"The board has been transferred to {user}" : "Le tableau a été transféré à {user}",
"Failed to transfer the board to {user}" : "Échec du transfert du tableau à {user}",
"Edit list title" : "Modifier le titre de la liste",
"Archive all cards" : "Archiver toutes les cartes",
"Unarchive all cards" : "Désarchiver toutes les cartes",
"Delete list" : "Supprimer la liste",
@@ -272,7 +270,6 @@ OC.L10N.register(
"Clone board" : "Dupliquer le tableau",
"Unarchive board" : "Désarchiver le tableau",
"Archive board" : "Archiver le tableau",
"Export board" : "Exporter le tableau",
"Turn on due date reminders" : "Activer les rappels",
"Turn off due date reminders" : "Désactiver les rappels",
"Due date reminders" : "Rappels",

View File

@@ -151,7 +151,6 @@
"Toggle compact mode" : "Activer/Désactiver l'affichage compact",
"Open details" : "Ouvrir les détails",
"Details" : "Détails",
"Currently present people" : "Personnes actuellement présentes",
"Loading board" : "Chargement du tableau…",
"No lists available" : "Aucune liste disponible",
"Create a new list to add cards to this board" : "Créer une nouvelle liste pour ajouter des cartes à ce tableau",
@@ -180,7 +179,6 @@
"Transfer" : "Transférer",
"The board has been transferred to {user}" : "Le tableau a été transféré à {user}",
"Failed to transfer the board to {user}" : "Échec du transfert du tableau à {user}",
"Edit list title" : "Modifier le titre de la liste",
"Archive all cards" : "Archiver toutes les cartes",
"Unarchive all cards" : "Désarchiver toutes les cartes",
"Delete list" : "Supprimer la liste",
@@ -270,7 +268,6 @@
"Clone board" : "Dupliquer le tableau",
"Unarchive board" : "Désarchiver le tableau",
"Archive board" : "Archiver le tableau",
"Export board" : "Exporter le tableau",
"Turn on due date reminders" : "Activer les rappels",
"Turn off due date reminders" : "Désactiver les rappels",
"Due date reminders" : "Rappels",

View File

@@ -153,7 +153,6 @@ OC.L10N.register(
"Toggle compact mode" : "Kompakt mód be/ki",
"Open details" : "Részletek megnyitása",
"Details" : "Részletek",
"Currently present people" : "Jelenleg jelenlévő emberek",
"Loading board" : "Tábla betöltése",
"No lists available" : "Nincs elérhető lista",
"Create a new list to add cards to this board" : "Hozzon létre egy új listát a kártyák ehhez a táblához való hozzáadásához",
@@ -182,7 +181,6 @@ OC.L10N.register(
"Transfer" : "Átadás",
"The board has been transferred to {user}" : "A tábla átadása {user} számára sikeres",
"Failed to transfer the board to {user}" : "A tábla átadása {user} számára sikertelen",
"Edit list title" : "Listacím szerkesztése",
"Archive all cards" : "Az összes kártya archiválása",
"Unarchive all cards" : "Az összes kártya archiválásának visszavonása",
"Delete list" : "Lista törlése",
@@ -272,7 +270,6 @@ OC.L10N.register(
"Clone board" : "Tábla klónozása",
"Unarchive board" : "Tábla archiválásának visszavonása",
"Archive board" : "Tábla archiválása",
"Export board" : "Tábla exportálása",
"Turn on due date reminders" : "Határidő emlékeztető beállítása",
"Turn off due date reminders" : "Határidő emlékeztető kikapcsolása",
"Due date reminders" : "Határidő emlékeztetők",

View File

@@ -151,7 +151,6 @@
"Toggle compact mode" : "Kompakt mód be/ki",
"Open details" : "Részletek megnyitása",
"Details" : "Részletek",
"Currently present people" : "Jelenleg jelenlévő emberek",
"Loading board" : "Tábla betöltése",
"No lists available" : "Nincs elérhető lista",
"Create a new list to add cards to this board" : "Hozzon létre egy új listát a kártyák ehhez a táblához való hozzáadásához",
@@ -180,7 +179,6 @@
"Transfer" : "Átadás",
"The board has been transferred to {user}" : "A tábla átadása {user} számára sikeres",
"Failed to transfer the board to {user}" : "A tábla átadása {user} számára sikertelen",
"Edit list title" : "Listacím szerkesztése",
"Archive all cards" : "Az összes kártya archiválása",
"Unarchive all cards" : "Az összes kártya archiválásának visszavonása",
"Delete list" : "Lista törlése",
@@ -270,7 +268,6 @@
"Clone board" : "Tábla klónozása",
"Unarchive board" : "Tábla archiválásának visszavonása",
"Archive board" : "Tábla archiválása",
"Export board" : "Tábla exportálása",
"Turn on due date reminders" : "Határidő emlékeztető beállítása",
"Turn off due date reminders" : "Határidő emlékeztető kikapcsolása",
"Due date reminders" : "Határidő emlékeztetők",

View File

@@ -3,7 +3,6 @@ OC.L10N.register(
{
"Personal" : "Udmawan",
"Finished" : "Immed",
"Done" : "Immed",
"The file was uploaded" : "Ulac afaylu yettwaznen",
"The file was only partially uploaded" : "Afaylu, cwiṭ kan i yettwaznen segs",
"No file was uploaded" : "Ulac afaylu i d-yettwasulin",
@@ -13,17 +12,12 @@ OC.L10N.register(
"Details" : "Talqayt",
"Sharing" : "Beṭṭu",
"Tags" : "Tibzimin",
"Owner" : "Bab",
"Delete" : "Kkes",
"Edit" : "Ẓreg",
"Download" : "Sider",
"Attachments" : "Ticeqqufin",
"Comments" : "Commentaires",
"Modified" : "Yettwabeddel",
"Today" : "Ass-a",
"Save" : "Sekles",
"Cancel reply" : "Semmet tiririt.",
"Reply" : "Err",
"No notifications" : "Ulac tisezmal",
"Share" : "Bḍu"
},

View File

@@ -1,7 +1,6 @@
{ "translations": {
"Personal" : "Udmawan",
"Finished" : "Immed",
"Done" : "Immed",
"The file was uploaded" : "Ulac afaylu yettwaznen",
"The file was only partially uploaded" : "Afaylu, cwiṭ kan i yettwaznen segs",
"No file was uploaded" : "Ulac afaylu i d-yettwasulin",
@@ -11,17 +10,12 @@
"Details" : "Talqayt",
"Sharing" : "Beṭṭu",
"Tags" : "Tibzimin",
"Owner" : "Bab",
"Delete" : "Kkes",
"Edit" : "Ẓreg",
"Download" : "Sider",
"Attachments" : "Ticeqqufin",
"Comments" : "Commentaires",
"Modified" : "Yettwabeddel",
"Today" : "Ass-a",
"Save" : "Sekles",
"Cancel reply" : "Semmet tiririt.",
"Reply" : "Err",
"No notifications" : "Ulac tisezmal",
"Share" : "Bḍu"
},"pluralForm" :"nplurals=2; plural=(n != 1);"

View File

@@ -119,7 +119,7 @@ OC.L10N.register(
"Cancel" : "Annuleren",
"Creating the new card …" : "Aanmaken nieuwe kaart...",
"Card \"{card}\" was added to \"{board}\"" : "Kaart \"{card}\" is toegevoegd aan \"{board}\"",
"Open card" : "Open kaart",
"Open card" : "Open kaard",
"Close" : "Sluiten",
"Create card" : "Aanmaken kaart",
"Select a card" : "Selecteer een kaart",

View File

@@ -117,7 +117,7 @@
"Cancel" : "Annuleren",
"Creating the new card …" : "Aanmaken nieuwe kaart...",
"Card \"{card}\" was added to \"{board}\"" : "Kaart \"{card}\" is toegevoegd aan \"{board}\"",
"Open card" : "Open kaart",
"Open card" : "Open kaard",
"Close" : "Sluiten",
"Create card" : "Aanmaken kaart",
"Select a card" : "Selecteer een kaart",

View File

@@ -153,7 +153,6 @@ OC.L10N.register(
"Toggle compact mode" : "Przełącz w tryb kompaktowy",
"Open details" : "Otwórz szczegóły",
"Details" : "Szczegóły",
"Currently present people" : "Aktualnie obecne osoby",
"Loading board" : "Wczytywanie tablicy",
"No lists available" : "Brak dostępnych list",
"Create a new list to add cards to this board" : "Utwórz nową listę, aby dodać karty do tej tablicy",
@@ -182,7 +181,6 @@ OC.L10N.register(
"Transfer" : "Przenieś",
"The board has been transferred to {user}" : "Tablica została przeniesiona do {user}",
"Failed to transfer the board to {user}" : "Nie udało się przenieść tablicy do {user}",
"Edit list title" : "Edytuj tytuł listy",
"Archive all cards" : "Zarchiwizuj wszystkie karty",
"Unarchive all cards" : "Przywróć wszystkie karty z archiwum",
"Delete list" : "Usuń listę",
@@ -272,7 +270,6 @@ OC.L10N.register(
"Clone board" : "Klonuj tablicę",
"Unarchive board" : "Przywróć tablicę",
"Archive board" : "Zarchiwizuj tablicę",
"Export board" : "Eksportuj tablicę",
"Turn on due date reminders" : "Włącz przypomnienia o terminach",
"Turn off due date reminders" : "Wyłącz przypomnienia o terminach",
"Due date reminders" : "Przypomnienia o terminach",

View File

@@ -151,7 +151,6 @@
"Toggle compact mode" : "Przełącz w tryb kompaktowy",
"Open details" : "Otwórz szczegóły",
"Details" : "Szczegóły",
"Currently present people" : "Aktualnie obecne osoby",
"Loading board" : "Wczytywanie tablicy",
"No lists available" : "Brak dostępnych list",
"Create a new list to add cards to this board" : "Utwórz nową listę, aby dodać karty do tej tablicy",
@@ -180,7 +179,6 @@
"Transfer" : "Przenieś",
"The board has been transferred to {user}" : "Tablica została przeniesiona do {user}",
"Failed to transfer the board to {user}" : "Nie udało się przenieść tablicy do {user}",
"Edit list title" : "Edytuj tytuł listy",
"Archive all cards" : "Zarchiwizuj wszystkie karty",
"Unarchive all cards" : "Przywróć wszystkie karty z archiwum",
"Delete list" : "Usuń listę",
@@ -270,7 +268,6 @@
"Clone board" : "Klonuj tablicę",
"Unarchive board" : "Przywróć tablicę",
"Archive board" : "Zarchiwizuj tablicę",
"Export board" : "Eksportuj tablicę",
"Turn on due date reminders" : "Włącz przypomnienia o terminach",
"Turn off due date reminders" : "Wyłącz przypomnienia o terminach",
"Due date reminders" : "Przypomnienia o terminach",

View File

@@ -153,7 +153,6 @@ OC.L10N.register(
"Toggle compact mode" : "Alternar modo compacto",
"Open details" : "Abrir detalhes",
"Details" : "Detalhes",
"Currently present people" : "Pessoas atualmente presentes",
"Loading board" : "Carregando painel",
"No lists available" : "Nenhuma lista disponível",
"Create a new list to add cards to this board" : "Criar uma nova lista para adicionar cartões a este painel",
@@ -182,7 +181,6 @@ OC.L10N.register(
"Transfer" : "Transferir",
"The board has been transferred to {user}" : "A painel foi transferida para {user}",
"Failed to transfer the board to {user}" : "Não foi possível transferir o painel para {user}",
"Edit list title" : "Editar título da lista",
"Archive all cards" : "Arquivar todos os cartões",
"Unarchive all cards" : "Desarquivar todos os cartões",
"Delete list" : "Excluir lista",
@@ -272,7 +270,6 @@ OC.L10N.register(
"Clone board" : "Clonar painel",
"Unarchive board" : "Desarquivar painel",
"Archive board" : "Arquivar painel",
"Export board" : "Quadro de exportação",
"Turn on due date reminders" : "Ativar lembretes de vencimento",
"Turn off due date reminders" : "Desativar lembretes de vencimento",
"Due date reminders" : "Lembretes de vencimento",

View File

@@ -151,7 +151,6 @@
"Toggle compact mode" : "Alternar modo compacto",
"Open details" : "Abrir detalhes",
"Details" : "Detalhes",
"Currently present people" : "Pessoas atualmente presentes",
"Loading board" : "Carregando painel",
"No lists available" : "Nenhuma lista disponível",
"Create a new list to add cards to this board" : "Criar uma nova lista para adicionar cartões a este painel",
@@ -180,7 +179,6 @@
"Transfer" : "Transferir",
"The board has been transferred to {user}" : "A painel foi transferida para {user}",
"Failed to transfer the board to {user}" : "Não foi possível transferir o painel para {user}",
"Edit list title" : "Editar título da lista",
"Archive all cards" : "Arquivar todos os cartões",
"Unarchive all cards" : "Desarquivar todos os cartões",
"Delete list" : "Excluir lista",
@@ -270,7 +268,6 @@
"Clone board" : "Clonar painel",
"Unarchive board" : "Desarquivar painel",
"Archive board" : "Arquivar painel",
"Export board" : "Quadro de exportação",
"Turn on due date reminders" : "Ativar lembretes de vencimento",
"Turn off due date reminders" : "Desativar lembretes de vencimento",
"Due date reminders" : "Lembretes de vencimento",

View File

@@ -153,7 +153,6 @@ OC.L10N.register(
"Toggle compact mode" : "Växla kompakt läge",
"Open details" : "Öppna detaljer",
"Details" : "Detaljer",
"Currently present people" : "Närvarande personer",
"Loading board" : "Läser in tavla",
"No lists available" : "Inga listor tillgängliga",
"Create a new list to add cards to this board" : "Skapa en ny lista för att lägga till kort på denna tavla",

View File

@@ -151,7 +151,6 @@
"Toggle compact mode" : "Växla kompakt läge",
"Open details" : "Öppna detaljer",
"Details" : "Detaljer",
"Currently present people" : "Närvarande personer",
"Loading board" : "Läser in tavla",
"No lists available" : "Inga listor tillgängliga",
"Create a new list to add cards to this board" : "Skapa en ny lista för att lägga till kort på denna tavla",

View File

@@ -3,48 +3,43 @@ OC.L10N.register(
{
"Personal" : "ส่วนตัว",
"copy" : "คัดลอก",
"Done" : "เสร็จสิ้น",
"Done" : "Done",
"The file was uploaded" : "ไฟล์อัปโหลดแล้ว",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "ขนาดไฟล์ที่อัปโหลดมีขนาดเกินค่า upload_max_filesize ที่ระบุไว้ใน php.ini",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "ไฟล์ที่อัโหลดมีขนาดใหญ่เกินค่า MAX_FILE_SIZE ที่ระบุไว้ในรูปแบบของ HTML",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "ไฟล์ที่อัโหลดมีขนาดไฟล์ใหญ่เกินจำนวนที่กำหนดไว้ในคำสั่ง MAX_FILE_SIZE ที่ถูกระบุไว้ในรูปแบบของ HTML",
"The file was only partially uploaded" : "ไฟล์ถูกอัปโหลดเพียงบางส่วน",
"No file was uploaded" : "ไม่มีไฟล์ที่ถูกอัโหลด",
"Missing a temporary folder" : "โฟลเดอร์ชั่วคราวขาดหาย",
"No file was uploaded" : "ไม่มีไฟล์ที่ถูกอัโหลด",
"Missing a temporary folder" : "โฟลเดอร์ชั่วคราวเกิดการสูญหาย",
"Could not write file to disk" : "ไม่สามารถเขียนไฟล์ลงดิสก์",
"A PHP extension stopped the file upload" : "ส่วนขยาย PHP ได้หยุดการอัปโหลดไฟล์",
"Card not found" : "ไม่พบการ์ด",
"Invalid date, date format must be YYYY-MM-DD" : "วันที่ไม่ถูกต้อง รูปแบบวันที่จะต้องเป็น ปปปป-ดด-วว",
"Invalid date, date format must be YYYY-MM-DD" : "วันที่ไม่ถูกต้อง รูปแบบวันที่จะต้องเป็น YYYY-MM-DD",
"Cancel" : "ยกเลิก",
"Close" : "ปิด",
"File already exists" : "ไฟล์นี้มีอยู่แล้ว",
"Overdue" : "เกินกำหนด",
"File already exists" : "ไฟล์นี้มีแล้ว",
"Details" : "รายละเอียด",
"Sharing" : "การแชร์",
"Tags" : "แท็ก",
"Sharing" : "แชร์ข้อมูล",
"Tags" : "ป้ายกำกับ",
"Undo" : "เลิกทำ",
"Can edit" : "สามารถแก้ไข",
"Can share" : "สามารถแชร์",
"Can edit" : "Can edit",
"Can share" : "Can share",
"Owner" : "เจ้าของ",
"Delete" : "ลบ",
"Transfer" : "โอนย้าย",
"Edit" : "แก้ไข",
"Download" : "ดาวน์โหลด",
"Invalid path selected" : "เลือกเส้นทางไม่ถูกต้อง",
"Attachments" : "ไฟล์แนบ",
"Comments" : "ความคิดเห็น",
"Modified" : "แก้ไขเมื่อ",
"Due date" : "วันที่ครบกำหนด",
"Today" : "วันนี้",
"Tomorrow" : "พรุ่งนี้",
"Tomorrow" : "วันพรุ่งนี้",
"Save" : "บันทึก",
"Reply" : "ตอบกลับ",
"Update" : "อัเด",
"Update" : "อัเด",
"Description" : "รายละเอียด",
"(group)" : "(กลุ่ม)",
"seconds ago" : "วินาทีที่ผ่านมา",
"Shared with you" : "แชร์กับคุณ",
"Edit board" : "แก้ไขกระดาน",
"Delete board" : "ลบกระดาน",
"seconds ago" : "วินาที ก่อนหน้านี้",
"Shared with you" : "Shared with you",
"An error occurred" : "เกิดข้อผิดพลาด",
"Share" : "แชร์"
},

View File

@@ -1,48 +1,43 @@
{ "translations": {
"Personal" : "ส่วนตัว",
"copy" : "คัดลอก",
"Done" : "เสร็จสิ้น",
"Done" : "Done",
"The file was uploaded" : "ไฟล์อัปโหลดแล้ว",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "ขนาดไฟล์ที่อัปโหลดมีขนาดเกินค่า upload_max_filesize ที่ระบุไว้ใน php.ini",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "ไฟล์ที่อัโหลดมีขนาดใหญ่เกินค่า MAX_FILE_SIZE ที่ระบุไว้ในรูปแบบของ HTML",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "ไฟล์ที่อัโหลดมีขนาดไฟล์ใหญ่เกินจำนวนที่กำหนดไว้ในคำสั่ง MAX_FILE_SIZE ที่ถูกระบุไว้ในรูปแบบของ HTML",
"The file was only partially uploaded" : "ไฟล์ถูกอัปโหลดเพียงบางส่วน",
"No file was uploaded" : "ไม่มีไฟล์ที่ถูกอัโหลด",
"Missing a temporary folder" : "โฟลเดอร์ชั่วคราวขาดหาย",
"No file was uploaded" : "ไม่มีไฟล์ที่ถูกอัโหลด",
"Missing a temporary folder" : "โฟลเดอร์ชั่วคราวเกิดการสูญหาย",
"Could not write file to disk" : "ไม่สามารถเขียนไฟล์ลงดิสก์",
"A PHP extension stopped the file upload" : "ส่วนขยาย PHP ได้หยุดการอัปโหลดไฟล์",
"Card not found" : "ไม่พบการ์ด",
"Invalid date, date format must be YYYY-MM-DD" : "วันที่ไม่ถูกต้อง รูปแบบวันที่จะต้องเป็น ปปปป-ดด-วว",
"Invalid date, date format must be YYYY-MM-DD" : "วันที่ไม่ถูกต้อง รูปแบบวันที่จะต้องเป็น YYYY-MM-DD",
"Cancel" : "ยกเลิก",
"Close" : "ปิด",
"File already exists" : "ไฟล์นี้มีอยู่แล้ว",
"Overdue" : "เกินกำหนด",
"File already exists" : "ไฟล์นี้มีแล้ว",
"Details" : "รายละเอียด",
"Sharing" : "การแชร์",
"Tags" : "แท็ก",
"Sharing" : "แชร์ข้อมูล",
"Tags" : "ป้ายกำกับ",
"Undo" : "เลิกทำ",
"Can edit" : "สามารถแก้ไข",
"Can share" : "สามารถแชร์",
"Can edit" : "Can edit",
"Can share" : "Can share",
"Owner" : "เจ้าของ",
"Delete" : "ลบ",
"Transfer" : "โอนย้าย",
"Edit" : "แก้ไข",
"Download" : "ดาวน์โหลด",
"Invalid path selected" : "เลือกเส้นทางไม่ถูกต้อง",
"Attachments" : "ไฟล์แนบ",
"Comments" : "ความคิดเห็น",
"Modified" : "แก้ไขเมื่อ",
"Due date" : "วันที่ครบกำหนด",
"Today" : "วันนี้",
"Tomorrow" : "พรุ่งนี้",
"Tomorrow" : "วันพรุ่งนี้",
"Save" : "บันทึก",
"Reply" : "ตอบกลับ",
"Update" : "อัเด",
"Update" : "อัเด",
"Description" : "รายละเอียด",
"(group)" : "(กลุ่ม)",
"seconds ago" : "วินาทีที่ผ่านมา",
"Shared with you" : "แชร์กับคุณ",
"Edit board" : "แก้ไขกระดาน",
"Delete board" : "ลบกระดาน",
"seconds ago" : "วินาที ก่อนหน้านี้",
"Shared with you" : "Shared with you",
"An error occurred" : "เกิดข้อผิดพลาด",
"Share" : "แชร์"
},"pluralForm" :"nplurals=1; plural=0;"

View File

@@ -153,7 +153,6 @@ OC.L10N.register(
"Toggle compact mode" : "Sıkışık kipi değiştir",
"Open details" : "Ayrıntıları aç",
"Details" : "Ayrıntılar",
"Currently present people" : "Şu anda var olan kişiler",
"Loading board" : "Pano yükleniyor",
"No lists available" : "Kullanılabilecek bir liste yok",
"Create a new list to add cards to this board" : "Bu panoya kartlar eklemek için yeni bir liste ekleyin",
@@ -182,7 +181,6 @@ OC.L10N.register(
"Transfer" : "Aktar",
"The board has been transferred to {user}" : "Pano {user} kullanıcısına aktarıldı",
"Failed to transfer the board to {user}" : "Pano {user} kullanıcısına aktarılamadı",
"Edit list title" : "Liste başlığını düzenle",
"Archive all cards" : "Tüm kartları arşivle",
"Unarchive all cards" : "Tüm kartları arşivden çıkar",
"Delete list" : "Listeyi sil",
@@ -272,7 +270,6 @@ OC.L10N.register(
"Clone board" : "Panoyu kopyala",
"Unarchive board" : "Panoyu arşivden çıkar",
"Archive board" : "Panoyu arşivle",
"Export board" : "Panoyu dışa aktar",
"Turn on due date reminders" : "Tarih anımsatıcılarını aç",
"Turn off due date reminders" : "Tarih anımsatıcılarını kapat",
"Due date reminders" : "Bitiş tarihi anımsatıcıları",

View File

@@ -151,7 +151,6 @@
"Toggle compact mode" : "Sıkışık kipi değiştir",
"Open details" : "Ayrıntıları aç",
"Details" : "Ayrıntılar",
"Currently present people" : "Şu anda var olan kişiler",
"Loading board" : "Pano yükleniyor",
"No lists available" : "Kullanılabilecek bir liste yok",
"Create a new list to add cards to this board" : "Bu panoya kartlar eklemek için yeni bir liste ekleyin",
@@ -180,7 +179,6 @@
"Transfer" : "Aktar",
"The board has been transferred to {user}" : "Pano {user} kullanıcısına aktarıldı",
"Failed to transfer the board to {user}" : "Pano {user} kullanıcısına aktarılamadı",
"Edit list title" : "Liste başlığını düzenle",
"Archive all cards" : "Tüm kartları arşivle",
"Unarchive all cards" : "Tüm kartları arşivden çıkar",
"Delete list" : "Listeyi sil",
@@ -270,7 +268,6 @@
"Clone board" : "Panoyu kopyala",
"Unarchive board" : "Panoyu arşivden çıkar",
"Archive board" : "Panoyu arşivle",
"Export board" : "Panoyu dışa aktar",
"Turn on due date reminders" : "Tarih anımsatıcılarını aç",
"Turn off due date reminders" : "Tarih anımsatıcılarını kapat",
"Due date reminders" : "Bitiş tarihi anımsatıcıları",

View File

@@ -12,7 +12,7 @@ OC.L10N.register(
"You have removed {acl} from the board {board}" : "Ви вилучили {acl} з дошки {board}",
"{user} has removed {acl} from the board {board}" : "{user} вилучив {acl} з дошки {board}",
"You have renamed the board {before} to {board}" : "Ви перейменували дошку з {before} на {board}",
"{user} has renamed the board {before} to {board}" : "{user} змінив(-ла) назву дошки {before} на {board}",
"{user} has renamed the board {before} to {board}" : "{user} змінив назву дошки {before} на {board}",
"You have archived the board {board}" : "Ви заархівували дошку {board}",
"{user} has archived the board {before}" : "{user} заархівував дошку {before}",
"You have unarchived the board {board}" : "Ви розархівували дошку {board}",
@@ -20,7 +20,7 @@ OC.L10N.register(
"You have created a new list {stack} on board {board}" : "Ви створили новий список {stack} на борту {board}",
"{user} has created a new list {stack} on board {board}" : "{user} створив новий список {stack} на дошці {board}",
"You have renamed list {before} to {stack} on board {board}" : "Ви перейменували список {before} на {stack} на дошці {board}",
"{user} has renamed list {before} to {stack} on board {board}" : "{user} змінив(-ла) назву списку {before} на {stack} на дошці {board}",
"{user} has renamed list {before} to {stack} on board {board}" : "{user} змінив назву списку {before} на {stack} на дошці {board}",
"You have deleted list {stack} on board {board}" : "Ви видалили список {stack} на дошці {board}",
"{user} has deleted list {stack} on board {board}" : "{user} видалив список {stack} на дошці {board}",
"You have created card {card} in list {stack} on board {board}" : "Ви створили картку {card} у списку {stack} на дошці {board}",
@@ -28,7 +28,7 @@ OC.L10N.register(
"You have deleted card {card} in list {stack} on board {board}" : "Ви видалили картку {card} у списку {stack} на дошці {board}",
"{user} has deleted card {card} in list {stack} on board {board}" : "{user} видалив картку {card} у списку {stack} на дошці {board}",
"You have renamed the card {before} to {card}" : "Ви перейменували картку {before} на {card}",
"{user} has renamed the card {before} to {card}" : "{user} змінив(-ла) назву картки {before} на {card}",
"{user} has renamed the card {before} to {card}" : "{user} змінив назву картки {before} на {card}",
"You have added a description to card {card} in list {stack} on board {board}" : "Ви додали опис картки {card} у списку {stack} на дошці {board}",
"{user} has added a description to card {card} in list {stack} on board {board}" : "{user} додав опис до картки {card} у списку {stack} на дошці {board}",
"You have updated the description of card {card} in list {stack} on board {board}" : "Ви оновили опис картки {card} у списку {stack} на дошці {board}",

View File

@@ -10,7 +10,7 @@
"You have removed {acl} from the board {board}" : "Ви вилучили {acl} з дошки {board}",
"{user} has removed {acl} from the board {board}" : "{user} вилучив {acl} з дошки {board}",
"You have renamed the board {before} to {board}" : "Ви перейменували дошку з {before} на {board}",
"{user} has renamed the board {before} to {board}" : "{user} змінив(-ла) назву дошки {before} на {board}",
"{user} has renamed the board {before} to {board}" : "{user} змінив назву дошки {before} на {board}",
"You have archived the board {board}" : "Ви заархівували дошку {board}",
"{user} has archived the board {before}" : "{user} заархівував дошку {before}",
"You have unarchived the board {board}" : "Ви розархівували дошку {board}",
@@ -18,7 +18,7 @@
"You have created a new list {stack} on board {board}" : "Ви створили новий список {stack} на борту {board}",
"{user} has created a new list {stack} on board {board}" : "{user} створив новий список {stack} на дошці {board}",
"You have renamed list {before} to {stack} on board {board}" : "Ви перейменували список {before} на {stack} на дошці {board}",
"{user} has renamed list {before} to {stack} on board {board}" : "{user} змінив(-ла) назву списку {before} на {stack} на дошці {board}",
"{user} has renamed list {before} to {stack} on board {board}" : "{user} змінив назву списку {before} на {stack} на дошці {board}",
"You have deleted list {stack} on board {board}" : "Ви видалили список {stack} на дошці {board}",
"{user} has deleted list {stack} on board {board}" : "{user} видалив список {stack} на дошці {board}",
"You have created card {card} in list {stack} on board {board}" : "Ви створили картку {card} у списку {stack} на дошці {board}",
@@ -26,7 +26,7 @@
"You have deleted card {card} in list {stack} on board {board}" : "Ви видалили картку {card} у списку {stack} на дошці {board}",
"{user} has deleted card {card} in list {stack} on board {board}" : "{user} видалив картку {card} у списку {stack} на дошці {board}",
"You have renamed the card {before} to {card}" : "Ви перейменували картку {before} на {card}",
"{user} has renamed the card {before} to {card}" : "{user} змінив(-ла) назву картки {before} на {card}",
"{user} has renamed the card {before} to {card}" : "{user} змінив назву картки {before} на {card}",
"You have added a description to card {card} in list {stack} on board {board}" : "Ви додали опис картки {card} у списку {stack} на дошці {board}",
"{user} has added a description to card {card} in list {stack} on board {board}" : "{user} додав опис до картки {card} у списку {stack} на дошці {board}",
"You have updated the description of card {card} in list {stack} on board {board}" : "Ви оновили опис картки {card} у списку {stack} на дошці {board}",

View File

@@ -153,7 +153,6 @@ OC.L10N.register(
"Toggle compact mode" : "切換簡潔模式",
"Open details" : "開啟細節",
"Details" : "詳情",
"Currently present people" : "目前在場人仕",
"Loading board" : "正在加載面板",
"No lists available" : "無清單可用",
"Create a new list to add cards to this board" : "創建一張新清單來添加卡片到這個看板",

View File

@@ -151,7 +151,6 @@
"Toggle compact mode" : "切換簡潔模式",
"Open details" : "開啟細節",
"Details" : "詳情",
"Currently present people" : "目前在場人仕",
"Loading board" : "正在加載面板",
"No lists available" : "無清單可用",
"Create a new list to add cards to this board" : "創建一張新清單來添加卡片到這個看板",

View File

@@ -325,6 +325,7 @@ class ActivityManager {
*/
$eventType = 'deck';
$subjectParams = [];
$message = null;
switch ($subject) {
// No need to enhance parameters since entity already contains the required data
case self::SUBJECT_BOARD_CREATE:
@@ -433,6 +434,10 @@ class ActivityManager {
->setSubject($subject, $subjectParams)
->setTimestamp(time());
if ($message !== null) {
$event->setMessage($message);
}
// FIXME: We currently require activities for comments even if they are disabled though settings
// Get rid of this once the frontend fetches comments/activity individually
if ($eventType === 'deck_comment') {

View File

@@ -77,7 +77,7 @@ class DeckProvider implements IProvider {
* @throws \InvalidArgumentException Should be thrown if your provider does not know this event
* @since 11.0.0
*/
public function parse($language, IEvent $event, IEvent $previousEvent = null): IEvent {
public function parse($language, IEvent $event, IEvent $previousEvent = null) {
if ($event->getApp() !== 'deck') {
throw new \InvalidArgumentException();
}
@@ -294,7 +294,7 @@ class DeckProvider implements IProvider {
if (array_key_exists('comment', $subjectParams)) {
/** @var IComment $comment */
try {
$comment = $this->commentsManager->get($subjectParams['comment']);
$comment = $this->commentsManager->get((int)$subjectParams['comment']);
$event->setParsedMessage($comment->getMessage());
$params['comment'] = [
'type' => 'highlight',

View File

@@ -29,7 +29,7 @@ class DescriptionSetting extends Setting {
* @return string Lowercase a-z and underscore only identifier
* @since 11.0.0
*/
public function getIdentifier(): string {
public function getIdentifier() {
return 'deck_card_description';
}
@@ -37,7 +37,7 @@ class DescriptionSetting extends Setting {
* @return string A translated string
* @since 11.0.0
*/
public function getName(): string {
public function getName() {
return $this->l->t('A <strong>card description</strong> inside the Deck app has been changed');
}
}

View File

@@ -42,7 +42,7 @@ class Filter implements \OCP\Activity\IFilter {
* @return string Lowercase a-z and underscore only identifier
* @since 11.0.0
*/
public function getIdentifier(): string {
public function getIdentifier() {
return 'deck';
}
@@ -50,7 +50,7 @@ class Filter implements \OCP\Activity\IFilter {
* @return string A translated string
* @since 11.0.0
*/
public function getName(): string {
public function getName() {
return $this->l10n->t('Deck');
}
@@ -60,7 +60,7 @@ class Filter implements \OCP\Activity\IFilter {
* priority values. It is required to return a value between 0 and 100.
* @since 11.0.0
*/
public function getPriority(): int {
public function getPriority() {
return 90;
}
@@ -68,7 +68,7 @@ class Filter implements \OCP\Activity\IFilter {
* @return string Full URL to an icon, empty string when none is given
* @since 11.0.0
*/
public function getIcon(): string {
public function getIcon() {
return $this->urlGenerator->imagePath('deck', 'deck-dark.svg');
}
@@ -77,7 +77,7 @@ class Filter implements \OCP\Activity\IFilter {
* @return string[] An array of allowed apps from which activities should be displayed
* @since 11.0.0
*/
public function filterTypes(array $types): array {
public function filterTypes(array $types) {
return array_merge($types, ['deck_comment']);
}
@@ -85,7 +85,7 @@ class Filter implements \OCP\Activity\IFilter {
* @return string[] An array of allowed apps from which activities should be displayed
* @since 11.0.0
*/
public function allowedApps(): array {
public function allowedApps() {
return ['deck'];
}
}

View File

@@ -41,7 +41,7 @@ class Setting implements \OCP\Activity\ISetting {
* @return string Lowercase a-z and underscore only identifier
* @since 11.0.0
*/
public function getIdentifier(): string {
public function getIdentifier() {
return 'deck';
}
@@ -49,7 +49,7 @@ class Setting implements \OCP\Activity\ISetting {
* @return string A translated string
* @since 11.0.0
*/
public function getName(): string {
public function getName() {
return $this->l->t('Changes in the <strong>Deck app</strong>');
}
@@ -59,7 +59,7 @@ class Setting implements \OCP\Activity\ISetting {
* priority values. It is required to return a value between 0 and 100.
* @since 11.0.0
*/
public function getPriority(): int {
public function getPriority() {
return 90;
}
@@ -67,7 +67,7 @@ class Setting implements \OCP\Activity\ISetting {
* @return bool True when the option can be changed for the stream
* @since 11.0.0
*/
public function canChangeStream(): bool {
public function canChangeStream() {
return true;
}
@@ -75,7 +75,7 @@ class Setting implements \OCP\Activity\ISetting {
* @return bool True when the option can be changed for the stream
* @since 11.0.0
*/
public function isDefaultEnabledStream(): bool {
public function isDefaultEnabledStream() {
return true;
}
@@ -83,7 +83,7 @@ class Setting implements \OCP\Activity\ISetting {
* @return bool True when the option can be changed for the mail
* @since 11.0.0
*/
public function canChangeMail(): bool {
public function canChangeMail() {
return true;
}
@@ -91,7 +91,7 @@ class Setting implements \OCP\Activity\ISetting {
* @return bool True when the option can be changed for the stream
* @since 11.0.0
*/
public function isDefaultEnabledMail(): bool {
public function isDefaultEnabledMail() {
return false;
}
}

View File

@@ -29,7 +29,7 @@ class SettingComment extends Setting {
* @return string Lowercase a-z and underscore only identifier
* @since 11.0.0
*/
public function getIdentifier(): string {
public function getIdentifier() {
return 'deck_comment';
}
@@ -37,7 +37,7 @@ class SettingComment extends Setting {
* @return string A translated string
* @since 11.0.0
*/
public function getName(): string {
public function getName() {
return $this->l->t('A <strong>comment</strong> was created on a card');
}
@@ -45,7 +45,7 @@ class SettingComment extends Setting {
* @return bool True when the option can be changed for the stream
* @since 11.0.0
*/
public function canChangeStream(): bool {
public function canChangeStream() {
return false;
}
}

View File

@@ -26,13 +26,15 @@ namespace OCA\Deck\AppInfo;
use Closure;
use Exception;
use OC\EventDispatcher\SymfonyAdapter;
use OCA\Circles\Events\CircleDestroyedEvent;
use OCA\Deck\Activity\CommentEventHandler;
use OCA\Deck\Capabilities;
use OCA\Deck\Collaboration\Resources\ResourceProvider;
use OCA\Deck\Collaboration\Resources\ResourceProviderCard;
use OCA\Deck\Dashboard\DeckWidget;
use OCA\Deck\Db\Acl;
use OCA\Deck\Db\AclMapper;
use OCA\Deck\Db\AssignmentMapper;
use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\CardMapper;
use OCA\Deck\Event\AclCreatedEvent;
use OCA\Deck\Event\AclDeletedEvent;
@@ -40,13 +42,8 @@ use OCA\Deck\Event\AclUpdatedEvent;
use OCA\Deck\Event\CardCreatedEvent;
use OCA\Deck\Event\CardDeletedEvent;
use OCA\Deck\Event\CardUpdatedEvent;
use OCA\Deck\Event\SessionClosedEvent;
use OCA\Deck\Event\SessionCreatedEvent;
use OCA\Deck\Listeners\BeforeTemplateRenderedListener;
use OCA\Deck\Listeners\ParticipantCleanupListener;
use OCA\Deck\Listeners\FullTextSearchEventListener;
use OCA\Deck\Listeners\ResourceListener;
use OCA\Deck\Listeners\LiveUpdateListener;
use OCA\Deck\Middleware\DefaultBoardMiddleware;
use OCA\Deck\Middleware\ExceptionMiddleware;
use OCA\Deck\Notification\Notifier;
@@ -65,12 +62,15 @@ use OCP\Collaboration\Reference\RenderReferenceEvent;
use OCP\Collaboration\Resources\IProviderManager;
use OCP\Comments\CommentsEntityEvent;
use OCP\Comments\ICommentsManager;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Group\Events\GroupDeletedEvent;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\IGroupManager;
use OCP\IRequest;
use OCP\Server;
use OCP\IUserManager;
use OCP\Notification\IManager as NotificationManager;
use OCP\Share\IManager;
use OCP\User\Events\UserDeletedEvent;
@@ -95,6 +95,7 @@ class Application extends App implements IBootstrap {
}
public function boot(IBootContext $context): void {
$context->injectFn(Closure::fromCallable([$this, 'registerUserGroupHooks']));
$context->injectFn(Closure::fromCallable([$this, 'registerCommentsEntity']));
$context->injectFn(Closure::fromCallable([$this, 'registerCommentsEventHandler']));
$context->injectFn(Closure::fromCallable([$this, 'registerNotifications']));
@@ -142,24 +143,59 @@ class Application extends App implements IBootstrap {
$context->registerEventListener(AclCreatedEvent::class, FullTextSearchEventListener::class);
$context->registerEventListener(AclUpdatedEvent::class, FullTextSearchEventListener::class);
$context->registerEventListener(AclDeletedEvent::class, FullTextSearchEventListener::class);
// Handling cache invalidation for collections
$context->registerEventListener(AclCreatedEvent::class, ResourceListener::class);
$context->registerEventListener(AclDeletedEvent::class, ResourceListener::class);
$context->registerEventListener(UserDeletedEvent::class, ParticipantCleanupListener::class);
$context->registerEventListener(GroupDeletedEvent::class, ParticipantCleanupListener::class);
$context->registerEventListener(CircleDestroyedEvent::class, ParticipantCleanupListener::class);
// Event listening for realtime updates via notify_push
$context->registerEventListener(SessionCreatedEvent::class, LiveUpdateListener::class);
$context->registerEventListener(SessionClosedEvent::class, LiveUpdateListener::class);
}
public function registerNotifications(NotificationManager $notificationManager): void {
$notificationManager->registerNotifierService(Notifier::class);
}
private function registerUserGroupHooks(IUserManager $userManager, IGroupManager $groupManager): void {
$container = $this->getContainer();
/** @var IEventDispatcher $eventDispatcher */
$eventDispatcher = $container->get(IEventDispatcher::class);
// Delete user/group acl entries when they get deleted
$eventDispatcher->addListener(UserDeletedEvent::class, static function (Event $event) use ($container): void {
if (!($event instanceof UserDeletedEvent)) {
return;
}
$user = $event->getUser();
// delete existing acl entries for deleted user
/** @var AclMapper $aclMapper */
$aclMapper = $container->get(AclMapper::class);
$acls = $aclMapper->findByParticipant(Acl::PERMISSION_TYPE_USER, $user->getUID());
foreach ($acls as $acl) {
$aclMapper->delete($acl);
}
// delete existing user assignments
$assignmentMapper = $container->get(AssignmentMapper::class);
$assignments = $assignmentMapper->findByParticipant($user->getUID());
foreach ($assignments as $assignment) {
$assignmentMapper->delete($assignment);
}
/** @var BoardMapper $boardMapper */
$boardMapper = $container->get(BoardMapper::class);
$boards = $boardMapper->findAllByOwner($user->getUID());
foreach ($boards as $board) {
$boardMapper->delete($board);
}
});
$eventDispatcher->addListener(GroupDeletedEvent::class, static function (Event $event) use ($container): void {
if (!($event instanceof GroupDeletedEvent)) {
return;
}
$group = $event->getGroup();
/** @var AclMapper $aclMapper */
$aclMapper = $container->get(AclMapper::class);
$aclMapper->findByParticipant(Acl::PERMISSION_TYPE_GROUP, $group->getGID());
$acls = $aclMapper->findByParticipant(Acl::PERMISSION_TYPE_GROUP, $group->getGID());
foreach ($acls as $acl) {
$aclMapper->delete($acl);
}
});
}
public function registerCommentsEntity(IEventDispatcher $eventDispatcher): void {
$eventDispatcher->addListener(CommentsEntityEvent::EVENT_ENTITY, function (CommentsEntityEvent $event) {
$event->addEntityCollection(self::COMMENT_ENTITY_TYPE, function ($name) {

View File

@@ -169,15 +169,4 @@ class BoardController extends ApiController {
return new DataResponse([], HTTP::STATUS_UNAUTHORIZED);
}
/**
* @NoAdminRequired
* @param $boardId
* @return Board
* @throws \OCP\AppFramework\Db\DoesNotExistException
* @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException
*/
public function export($boardId) {
return $this->boardService->export($boardId);
}
}

View File

@@ -1,91 +0,0 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2022, chandi Langecker (git@chandi.it)
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Deck\Controller;
use OCA\Deck\Service\SessionService;
use OCA\Deck\Service\PermissionService;
use OCA\Deck\Db\BoardMapper;
use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\OCSController;
use OCP\IRequest;
use OCA\Deck\Db\Acl;
class SessionController extends OCSController {
private SessionService $sessionService;
private PermissionService $permissionService;
private BoardMapper $boardMapper;
public function __construct($appName,
IRequest $request,
SessionService $sessionService,
PermissionService $permissionService,
BoardMapper $boardMapper
) {
parent::__construct($appName, $request);
$this->sessionService = $sessionService;
$this->permissionService = $permissionService;
$this->boardMapper = $boardMapper;
}
/**
* @NoAdminRequired
*/
public function create(int $boardId): DataResponse {
$this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_READ);
$session = $this->sessionService->initSession($boardId);
return new DataResponse([
'token' => $session->getToken(),
]);
}
/**
* notifies the server that the session is still active
* @NoAdminRequired
* @param $boardId
*/
public function sync(int $boardId, string $token): DataResponse {
$this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_READ);
try {
$this->sessionService->syncSession($boardId, $token);
return new DataResponse([]);
} catch (DoesNotExistException $e) {
return new DataResponse([], 404);
}
}
/**
* delete a session if existing
* @NoAdminRequired
* @NoCSRFRequired
* @param $boardId
*/
public function close(int $boardId, string $token) {
$this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_READ);
$this->sessionService->closeSession($boardId, $token);
return new DataResponse();
}
}

View File

@@ -1,56 +0,0 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2022, chandi Langecker (git@chandi.it)
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Deck\Cron;
use OCA\Deck\Service\SessionService;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\TimedJob;
use OCP\ILogger;
class SessionsCleanup extends TimedJob {
private $sessionService;
private $documentService;
private $logger;
private $imageService;
public function __construct(ITimeFactory $time,
SessionService $sessionService,
ILogger $logger) {
parent::__construct($time);
$this->sessionService = $sessionService;
$this->logger = $logger;
$this->setInterval(SessionService::SESSION_VALID_TIME);
}
protected function run($argument) {
$this->logger->debug('Run cleanup job for deck sessions');
$removedSessions = $this->sessionService->removeInactiveSessions();
$this->logger->debug('Removed ' . $removedSessions . ' inactive sessions');
}
}

View File

@@ -28,7 +28,6 @@ use OCP\AppFramework\Db\MultipleObjectsReturnedException;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
/** @template-extends DeckMapper<Acl> */
class AclMapper extends DeckMapper implements IPermissionMapper {
public function __construct(IDBConnection $db) {
parent::__construct($db, 'deck_board_acl', Acl::class);
@@ -111,12 +110,4 @@ class AclMapper extends DeckMapper implements IPermissionMapper {
->andWhere($qb->expr()->eq('board_id', $qb->createNamedParameter($boardId, IQueryBuilder::PARAM_INT)));
$qb->executeStatement();
}
public function findByType(int $type): array {
$qb = $this->db->getQueryBuilder();
$qb->select('*')
->from('deck_board_acl')
->where($qb->expr()->eq('type', $qb->createNamedParameter($type, IQueryBuilder::PARAM_INT)));
return $this->findEntities($qb);
}
}

View File

@@ -35,7 +35,6 @@ use OCP\IGroupManager;
use OCP\IUserManager;
use PDO;
/** @template-extends QBMapper<Assignment> */
class AssignmentMapper extends QBMapper implements IPermissionMapper {
/** @var CardMapper */

View File

@@ -31,7 +31,6 @@ use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
use OCP\IUserManager;
/** @template-extends DeckMapper<Attachment> */
class AttachmentMapper extends DeckMapper implements IPermissionMapper {
private $cardMapper;
private $userManager;

View File

@@ -44,7 +44,6 @@ class Board extends RelationalEntity {
protected $users = [];
protected $shared;
protected $stacks = [];
protected $activeSessions = [];
protected $deletedAt = 0;
protected $lastModified = 0;
@@ -60,7 +59,6 @@ class Board extends RelationalEntity {
$this->addRelation('acl');
$this->addRelation('shared');
$this->addRelation('users');
$this->addRelation('activeSessions');
$this->addRelation('permissions');
$this->addRelation('stacks');
$this->addRelation('settings');

View File

@@ -33,7 +33,6 @@ use OCP\IUserManager;
use OCP\IGroupManager;
use Psr\Log\LoggerInterface;
/** @template-extends QBMapper<Board> */
class BoardMapper extends QBMapper implements IPermissionMapper {
private $labelMapper;
private $aclMapper;

View File

@@ -38,7 +38,6 @@ use OCP\IUser;
use OCP\IUserManager;
use OCP\Notification\IManager;
/** @template-extends QBMapper<Card> */
class CardMapper extends QBMapper implements IPermissionMapper {
/** @var LabelMapper */

View File

@@ -23,15 +23,15 @@
namespace OCA\Deck\Db;
use OCP\AppFramework\Db\Entity;
use OCP\AppFramework\Db\QBMapper;
use OCP\DB\QueryBuilder\IQueryBuilder;
/**
* @template T of Entity
* @template-extends QBMapper<T>
* Class DeckMapper
*
* @package OCA\Deck\Db
*/
abstract class DeckMapper extends QBMapper {
class DeckMapper extends QBMapper {
/**
* @param $id

View File

@@ -29,7 +29,6 @@ use OCP\AppFramework\Db\MultipleObjectsReturnedException;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
/** @template-extends DeckMapper<Label> */
class LabelMapper extends DeckMapper implements IPermissionMapper {
public function __construct(IDBConnection $db) {
parent::__construct($db, 'deck_labels', Label::class);
@@ -52,6 +51,11 @@ class LabelMapper extends DeckMapper implements IPermissionMapper {
return $this->findEntities($qb);
}
/**
* @param Entity $entity
* @return Entity
* @throws \OCP\DB\Exception
*/
public function delete(Entity $entity): Entity {
// delete assigned labels
$this->deleteLabelAssignments($entity->getId());
@@ -101,12 +105,23 @@ class LabelMapper extends DeckMapper implements IPermissionMapper {
return $this->findEntities($qb);
}
/**
* @param Entity $entity
* @return Entity
* @throws \OCP\DB\Exception
*/
public function insert(Entity $entity): Entity {
$entity->setLastModified(time());
return parent::insert($entity);
}
public function update(Entity $entity, bool $updateModified = true): Entity {
/**
* @param Entity $entity
* @param bool $updateModified
* @return Entity
* @throws \OCP\DB\Exception
*/
public function update(Entity $entity, $updateModified = true): Entity {
if ($updateModified) {
$entity->setLastModified(time());
}

View File

@@ -53,7 +53,7 @@ class RelationalEntity extends Entity implements \JsonSerializable {
* @param string $attribute the name of the attribute
* @since 7.0.0
*/
protected function markFieldUpdated(string $attribute): void {
protected function markFieldUpdated($attribute) {
if (!in_array($attribute, $this->_relations, true)) {
parent::markFieldUpdated($attribute);
}

View File

@@ -1,51 +0,0 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2022, chandi Langecker (git@chandi.it)
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Deck\Db;
use OCP\AppFramework\Db\Entity;
class Session extends Entity implements \JsonSerializable {
public $id;
protected $userId;
protected $token;
protected $lastContact;
protected $boardId;
public function __construct() {
$this->addType('id', 'integer');
$this->addType('boardId', 'integer');
$this->addType('lastContact', 'integer');
}
public function jsonSerialize(): array {
return [
'id' => $this->id,
'userId' => $this->userId,
'token' => $this->token,
'lastContact' => $this->lastContact,
'boardId' => $this->boardId,
];
}
}

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