Compare commits

..

685 Commits

Author SHA1 Message Date
Julius Härtl
59ecf6936b chore(release): Bump version to 1.12.0
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-01-17 15:13:50 +01:00
Nextcloud bot
5ede270690 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-16 00:35:59 +00:00
Julius Härtl
fc41410812 Merge pull request #5483 from nextcloud/backport/5458/stable28 2024-01-15 17:40:09 +01:00
Julius Härtl
ec11bf0468 fix: Add debounce to update due date
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-01-15 10:08:22 +00:00
Julius Härtl
ee0b6bfea9 Merge pull request #5481 from nextcloud/automated/noid/stable28-update-nextcloud-ocp
[stable28] Update nextcloud/ocp dependency
2024-01-15 09:13:24 +01:00
nextcloud-command
7459424216 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2024-01-14 02:44:50 +00:00
Nextcloud bot
3995b326e4 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-14 00:36:27 +00:00
dependabot[bot]
c42a5241fb Merge pull request #5464 from nextcloud/dependabot/npm_and_yarn/stable28/babel/runtime-7.23.8 2024-01-13 03:52:54 +00:00
dependabot[bot]
2494770bab Merge pull request #5467 from nextcloud/dependabot/npm_and_yarn/stable28/nextcloud/moment-1.3.1 2024-01-13 03:05:08 +00:00
dependabot[bot]
32a72c8335 Merge pull request #5465 from nextcloud/dependabot/npm_and_yarn/stable28/nextcloud/notify_push-1.1.4 2024-01-13 03:03:35 +00:00
dependabot[bot]
9ee235d24e Merge pull request #5466 from nextcloud/dependabot/npm_and_yarn/stable28/nextcloud/files-3.1.0 2024-01-13 03:03:24 +00:00
dependabot[bot]
14236e7934 Chore(deps): Bump @nextcloud/moment from 1.2.2 to 1.3.1
Bumps [@nextcloud/moment](https://github.com/nextcloud/nextcloud-moment) from 1.2.2 to 1.3.1.
- [Release notes](https://github.com/nextcloud/nextcloud-moment/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-moment/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-moment/compare/v1.2.2...v1.3.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-13 02:11:41 +00:00
dependabot[bot]
7dd6c19e0d Chore(deps): Bump @nextcloud/files from 3.0.0 to 3.1.0
Bumps [@nextcloud/files](https://github.com/nextcloud-libraries/nextcloud-files) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-files/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-files/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-files/compare/v3.0.0...v3.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-13 02:11:28 +00:00
dependabot[bot]
cfc1f38378 Chore(deps): Bump @nextcloud/notify_push from 1.1.3 to 1.1.4
Bumps [@nextcloud/notify_push](https://github.com/icewind1991/notify_push-client) from 1.1.3 to 1.1.4.
- [Commits](https://github.com/icewind1991/notify_push-client/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-13 02:11:04 +00:00
dependabot[bot]
4751517e9a Chore(deps): Bump @babel/runtime from 7.23.7 to 7.23.8
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.23.7 to 7.23.8.
- [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.23.8/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>
2024-01-13 02:10:51 +00:00
Nextcloud bot
9e7224a561 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-13 00:37:34 +00:00
Julius Härtl
f41070c777 Merge pull request #5457 from nextcloud/backport/5455/stable28
[stable28] Fixing #5451
2024-01-12 08:45:56 +01:00
Rob Emery
8965bc2d15 Previously in compact mode, if there was no due date ever set
and the card was marked as complete, you could not see the tick

Signed-off-by: Rob Emery <git@mintsoft.net>
2024-01-12 07:35:15 +00:00
Nextcloud bot
2c499601ca Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-12 00:35:49 +00:00
Julius Härtl
c80ac4ab9d Merge pull request #5441 from nextcloud/backport/5423/stable28
[stable28] Fix deleted card/board issues
2024-01-10 20:34:49 +01:00
Nextcloud bot
473b481183 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-10 00:37:23 +00:00
Julius Härtl
aeda808d67 chore: Fix ci setup for activity
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-01-09 15:12:47 +01:00
Julius Härtl
9b5552663f fix: Limit card activities for deleted cards
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-01-09 15:12:47 +01:00
Julius Härtl
e7a20c18b0 fix: Further limit updating cards
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-01-09 15:12:47 +01:00
Julius Härtl
899ee5d459 fix: limit to non-deleted cards
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-01-09 15:12:47 +01:00
Julius Härtl
778e6980a1 fix: Consider a deleted board inaccessible to share recipients
Only the owner can delete/undo a board deletion so there is no reason
other users should have any permission on a board marked as deleted

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-01-09 15:12:47 +01:00
Julius Härtl
9710013a9d tests: Add integration tests for deleted boards/cards
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-01-09 15:12:44 +01:00
Nextcloud bot
2e41be3b83 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-09 00:37:03 +00:00
Julius Härtl
334788f4ba Merge pull request #5436 from nextcloud/automated/noid/stable28-update-nextcloud-ocp
[stable28] Update nextcloud/ocp dependency
2024-01-08 09:28:03 +01:00
nextcloud-command
5f9fcdf3dd chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2024-01-07 02:42:33 +00:00
Nextcloud bot
ec04eadd3b Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-07 00:39:56 +00:00
dependabot[bot]
68b598f047 Merge pull request #5429 from nextcloud/dependabot/npm_and_yarn/stable28/dompurify-3.0.8 2024-01-06 02:31:09 +00:00
dependabot[bot]
41d224d7ab Merge pull request #5430 from nextcloud/dependabot/npm_and_yarn/stable28/relative-ci/agent-4.2.3 2024-01-06 02:23:50 +00:00
dependabot[bot]
295d80ec28 Merge pull request #5428 from nextcloud/dependabot/npm_and_yarn/stable28/nextcloud/cypress-1.0.0-beta.7 2024-01-06 02:22:34 +00:00
dependabot[bot]
7aeec0199d Chore(deps-dev): Bump @relative-ci/agent from 4.2.2 to 4.2.3
Bumps [@relative-ci/agent](https://github.com/relative-ci/agent) from 4.2.2 to 4.2.3.
- [Release notes](https://github.com/relative-ci/agent/releases)
- [Commits](https://github.com/relative-ci/agent/compare/v4.2.2...v4.2.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>
2024-01-06 02:17:06 +00:00
dependabot[bot]
f6eb4929ca Chore(deps): Bump dompurify from 3.0.6 to 3.0.8
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.0.6 to 3.0.8.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.0.6...3.0.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-06 02:16:53 +00:00
dependabot[bot]
01f3514a44 Chore(deps-dev): Bump @nextcloud/cypress
Bumps [@nextcloud/cypress](https://github.com/nextcloud/nextcloud-cypress) from 1.0.0-beta.6 to 1.0.0-beta.7.
- [Release notes](https://github.com/nextcloud/nextcloud-cypress/releases)
- [Commits](https://github.com/nextcloud/nextcloud-cypress/compare/v1.0.0-beta.6...v1.0.0-beta.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-06 02:16:25 +00:00
Nextcloud bot
443d3f7585 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-05 00:39:44 +00:00
rakekniven
22f07394ef Merge pull request #5424 from nextcloud/backport/5359/stable28 2024-01-04 16:31:33 +01:00
rakekniven
f760d1b159 fix(i18n): Fixed typo
Signed-off-by: rakekniven <2069590+rakekniven@users.noreply.github.com>
2024-01-04 15:29:42 +00:00
Nextcloud bot
a950d76e4d Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-04 00:37:36 +00:00
Nextcloud bot
968cbc39eb Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-03 00:38:22 +00:00
dependabot[bot]
3fe2e37e64 Merge pull request #5411 from nextcloud/dependabot/npm_and_yarn/stable28/vue-2.7.16 2023-12-30 04:52:34 +00:00
dependabot[bot]
8623e9f3af Chore(deps): Bump vue from 2.7.15 to 2.7.16
Bumps [vue](https://github.com/vuejs/core) from 2.7.15 to 2.7.16.
- [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>
2023-12-30 04:08:01 +00:00
dependabot[bot]
91344b296d Merge pull request #5413 from nextcloud/dependabot/npm_and_yarn/stable28/babel/runtime-7.23.7 2023-12-30 04:07:15 +00:00
dependabot[bot]
174756e486 Merge pull request #5412 from nextcloud/dependabot/npm_and_yarn/stable28/cypress-13.6.2 2023-12-30 04:07:01 +00:00
dependabot[bot]
47dd5cfdf6 Merge pull request #5410 from nextcloud/dependabot/npm_and_yarn/stable28/vue-template-compiler-2.7.16 2023-12-30 04:06:32 +00:00
dependabot[bot]
170dc6f9b3 Merge pull request #5409 from nextcloud/dependabot/npm_and_yarn/stable28/moment-2.30.1 2023-12-30 04:04:49 +00:00
dependabot[bot]
75e065bcb9 Chore(deps): Bump @babel/runtime from 7.23.6 to 7.23.7
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.23.6 to 7.23.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.23.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>
2023-12-30 02:36:30 +00:00
dependabot[bot]
07b3d91e4f Chore(deps-dev): Bump cypress from 13.6.1 to 13.6.2
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.6.1 to 13.6.2.
- [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/v13.6.1...v13.6.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-30 02:36:11 +00:00
dependabot[bot]
aecd332d5b Chore(deps-dev): Bump vue-template-compiler from 2.7.15 to 2.7.16
Bumps [vue-template-compiler](https://github.com/vuejs/vue) from 2.7.15 to 2.7.16.
- [Release notes](https://github.com/vuejs/vue/releases)
- [Changelog](https://github.com/vuejs/vue/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue/compare/v2.7.15...v2.7.16)

---
updated-dependencies:
- dependency-name: vue-template-compiler
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-30 02:35:47 +00:00
dependabot[bot]
22f4742a73 Chore(deps): Bump moment from 2.29.4 to 2.30.1
Bumps [moment](https://github.com/moment/moment) from 2.29.4 to 2.30.1.
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.4...2.30.1)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-30 02:35:34 +00:00
Nextcloud bot
ba645054ea Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-30 00:39:12 +00:00
Julius Härtl
ac437b99de Merge pull request #5402 from nextcloud/automated/update-workflows/stable28
chore: update workflows from templates
2023-12-28 15:43:09 +01:00
John Molakvoæ
e537e41254 chore: update workflows from templates
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2023-12-28 15:12:20 +01:00
Julius Härtl
64308791fd Merge pull request #5400 from nextcloud/automated/noid/stable28-update-nextcloud-ocp
[stable28] Update nextcloud/ocp dependency
2023-12-27 10:33:28 +01:00
Nextcloud bot
23a29c62cd Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-27 00:36:27 +00:00
Nextcloud bot
6d31ba2b04 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-26 00:38:10 +00:00
nextcloud-command
8920bddfd5 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-12-24 02:44:21 +00:00
Nextcloud bot
7b2f32e6a5 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-24 00:41:11 +00:00
Nextcloud bot
a464c5c785 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-23 00:37:23 +00:00
Nextcloud bot
dc9a0cb31b Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-20 00:35:24 +00:00
Nextcloud bot
e03b7aa385 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-18 00:36:04 +00:00
Nextcloud bot
ab1d89f5b4 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-17 00:36:20 +00:00
dependabot[bot]
4e6a7bcd30 Merge pull request #5386 from nextcloud/dependabot/npm_and_yarn/stable28/babel/runtime-7.23.6 2023-12-16 03:44:26 +00:00
dependabot[bot]
f3c408abb6 Merge pull request #5385 from nextcloud/dependabot/npm_and_yarn/stable28/relative-ci/agent-4.2.2 2023-12-16 03:39:33 +00:00
dependabot[bot]
3cd514e722 bump @babel/runtime from 7.23.5 to 7.23.6
---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-16 03:04:46 +00:00
dependabot[bot]
471b724ae8 bump @relative-ci/agent from 4.2.1 to 4.2.2
---
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>
2023-12-16 03:04:30 +00:00
Julius Härtl
e58981577c Merge pull request #5372 from nextcloud/automated/noid/stable28-update-nextcloud-ocp
[stable28] Update nextcloud/ocp dependency
2023-12-15 13:01:14 +01:00
Nextcloud bot
3768013c17 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-15 00:35:55 +00:00
Nextcloud bot
d72aa4b047 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-13 00:36:46 +00:00
Nextcloud bot
4dcf91e691 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-12 00:35:28 +00:00
Julius Härtl
1cd787fb31 chore(release): Bump version to 1.12.0
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-12-11 18:30:25 +01:00
Nextcloud bot
6434c7afc4 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-11 00:41:14 +00:00
nextcloud-command
44e61bdc49 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-12-10 02:35:40 +00:00
Nextcloud bot
23c4730ef0 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-10 00:35:23 +00:00
dependabot[bot]
744812f01f Merge pull request #5360 from nextcloud/dependabot/npm_and_yarn/stable28/cypress-13.6.1 2023-12-09 02:16:09 +00:00
dependabot[bot]
008732aba1 Chore(deps-dev): Bump cypress from 13.6.0 to 13.6.1
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.6.0 to 13.6.1.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.6.0...v13.6.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-09 02:02:10 +00:00
Nextcloud bot
7446acebff Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-09 00:35:25 +00:00
Julius Härtl
ecc9cbab33 chore(release): Bump version to 1.12.0-beta.5
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-12-08 15:27:44 +01:00
Nextcloud bot
3898d17b83 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-08 00:35:39 +00:00
Julius Härtl
365639e9dc Merge pull request #5358 from nextcloud/backport/3758/stable28 2023-12-07 18:04:57 +01:00
Julius Härtl
b5ff812e84 tmp: Remove shortcuts requiring an extra UI for now
They can be readded once we have a proper design for it to make sure
auto focus is working and those are nicely fitting the UI

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-12-07 15:30:06 +00:00
Adrian Missy
8800053905 feat: Add keyboard shortcuts
Implement keyboard shortcuts for the board view and individual cards

Signed-off-by: Adrian Missy <adrian.missy@onewavestudios.com>
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-12-07 15:30:05 +00:00
Nextcloud bot
0a77443c5c Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-07 00:36:15 +00:00
Julius Härtl
49d9f975f8 Merge pull request #5355 from nextcloud/backport/5354/stable28 2023-12-06 21:39:59 +01:00
Mario Jäckle
363812fa4b fix: allow null label colors in trello json importer
Signed-off-by: Mario Jäckle <github@jacksbox.de>
2023-12-06 17:05:26 +00:00
Julius Härtl
e8ab1adb50 Merge pull request #5352 from nextcloud/backport/5351/stable28 2023-12-06 14:27:15 +01:00
Julius Härtl
0bfa2ac16b fix: Get proper rich object for card actions
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-12-06 08:51:39 +00:00
Nextcloud bot
6b6ce1a3a9 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-06 00:37:10 +00:00
Nextcloud bot
0589d4dd61 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-05 00:37:39 +00:00
Julius Härtl
581755e520 Merge pull request #5343 from nextcloud/automated/noid/stable28-update-nextcloud-ocp 2023-12-04 18:05:20 +01:00
nextcloud-command
2d30564a69 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-12-03 02:37:22 +00:00
dependabot[bot]
1474e84640 Merge pull request #5338 from nextcloud/dependabot/npm_and_yarn/stable28/babel/runtime-7.23.5 2023-12-02 03:33:42 +00:00
dependabot[bot]
33572a6af9 Chore(deps): Bump @babel/runtime from 7.23.4 to 7.23.5
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.23.4 to 7.23.5.
- [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.23.5/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-02 02:27:28 +00:00
Nextcloud bot
4e2ea13c2c Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-01 00:34:19 +00:00
Julius Härtl
216967e976 chore(release): Bump version to 1.12.0-beta.4
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-29 12:32:01 +01:00
Nextcloud bot
2d9febf8a4 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-27 00:40:16 +00:00
Julius Härtl
2cdca8250c Merge pull request #5329 from nextcloud/automated/noid/stable28-update-nextcloud-ocp 2023-11-26 14:05:38 +01:00
nextcloud-command
81a41ffd6f chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-11-26 02:40:43 +00:00
Nextcloud bot
bd02944bf3 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-26 00:39:54 +00:00
Nextcloud bot
c34c1bbbf1 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-25 00:44:11 +00:00
Nextcloud bot
44fc8a3931 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-24 01:06:31 +00:00
dependabot[bot]
44d072647e Merge pull request #5321 from nextcloud/dependabot/npm_and_yarn/stable28/nextcloud/vue-7.12.7 2023-11-23 16:05:48 +00:00
dependabot[bot]
3cb8821dca Merge pull request #5319 from nextcloud/dependabot/npm_and_yarn/stable28/babel/runtime-7.23.4 2023-11-23 16:04:23 +00:00
dependabot[bot]
0a649768fa Merge pull request #5318 from nextcloud/dependabot/npm_and_yarn/stable28/cypress-13.6.0 2023-11-23 16:02:11 +00:00
dependabot[bot]
c624d51586 Chore(deps): Bump @nextcloud/vue from 7.12.6 to 7.12.7
Bumps [@nextcloud/vue](https://github.com/nextcloud-libraries/nextcloud-vue) from 7.12.6 to 7.12.7.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-vue/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-vue/compare/v7.12.6...v7.12.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-23 15:19:42 +00:00
dependabot[bot]
12514b8c55 Chore(deps): Bump @babel/runtime from 7.23.2 to 7.23.4
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.23.2 to 7.23.4.
- [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.23.4/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-23 15:19:29 +00:00
dependabot[bot]
4d3953ec13 Chore(deps-dev): Bump cypress from 13.5.1 to 13.6.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.5.1 to 13.6.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/v13.5.1...v13.6.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-23 15:19:15 +00:00
Julius Härtl
1a45c2dba3 Merge pull request #5313 from nextcloud/update-stable28-target-versions 2023-11-23 14:05:16 +01:00
Joas Schilling
4b886c6097 chore(CI): Adjust testing matrix for Nextcloud 28 on stable28
Signed-off-by: Joas Schilling <coding@schilljs.com>
2023-11-23 12:47:55 +01:00
Nextcloud bot
1a4f96e5dc Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-23 00:42:55 +00:00
Nextcloud bot
4875fe6f0b Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-22 00:43:00 +00:00
Nextcloud bot
6c4bf09958 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-21 00:44:10 +00:00
Julius Härtl
f223a39d64 Merge pull request #5299 from fitrahfm/fix/use-primary-when-filter-is-active 2023-11-20 21:30:54 +01:00
Fitrah Munir
80e09355f0 fix(card): use primary when filter is active
Signed-off-by: Fitrah Munir <fitrahmunir@outlook.com>
2023-11-20 22:30:20 +08:00
Julius Härtl
ebdbe651d0 Merge pull request #5296 from nextcloud/bugfix/noid/deleted-board-frontend 2023-11-20 15:30:00 +01:00
Julius Härtl
3c047d3e21 fix: Properly undo card deletion in the frontend
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-20 08:22:45 +01:00
Julius Härtl
911ed7a2f4 fix: Show proper error page when board was not found
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-20 08:22:45 +01:00
Julius Härtl
a05d64250f fix: Only query boards not marked for deletion unless we want to undo
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-20 08:22:45 +01:00
Julius Härtl
1e5b4fe8ea Merge pull request #5304 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/files-3.0.0 2023-11-20 07:49:25 +01:00
Nextcloud bot
cabe1ff53f Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-20 00:43:55 +00:00
Julius Härtl
5deb88e946 Merge pull request #5309 from nextcloud/automated/noid/main-update-nextcloud-ocp 2023-11-19 15:54:52 +01:00
nextcloud-command
e3e3894a9d chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-11-19 02:41:31 +00:00
Julius Härtl
20da8d004b Merge pull request #5301 from nextcloud/dependabot/github_actions/actions/github-script-7 2023-11-18 08:48:34 +01:00
dependabot[bot]
af653a0f93 Merge pull request #5307 from nextcloud/dependabot/npm_and_yarn/main/relative-ci/agent-4.2.1 2023-11-18 04:17:51 +00:00
dependabot[bot]
ea23daed7d Chore(deps-dev): Bump @relative-ci/agent from 4.1.10 to 4.2.1
Bumps [@relative-ci/agent](https://github.com/relative-ci/agent) from 4.1.10 to 4.2.1.
- [Release notes](https://github.com/relative-ci/agent/releases)
- [Commits](https://github.com/relative-ci/agent/compare/v4.1.10...v4.2.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-18 04:03:05 +00:00
dependabot[bot]
bd06fd6b33 Merge pull request #5306 from nextcloud/dependabot/npm_and_yarn/main/cypress-13.5.1 2023-11-18 04:02:16 +00:00
dependabot[bot]
66958e5dcc Merge pull request #5305 from nextcloud/dependabot/composer/tests/integration/sabre/dav-4.5.0 2023-11-18 03:58:43 +00:00
dependabot[bot]
b9b1fb9f03 Chore(deps-dev): Bump cypress from 13.5.0 to 13.5.1
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.5.0 to 13.5.1.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.5.0...v13.5.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-18 03:44:05 +00:00
dependabot[bot]
907d472749 Chore(deps-dev): Update sabre/dav requirement in /tests/integration
Updates the requirements on [sabre/dav](https://github.com/sabre-io/dav) to permit the latest version.
- [Release notes](https://github.com/sabre-io/dav/releases)
- [Changelog](https://github.com/sabre-io/dav/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sabre-io/dav/compare/4.4.0...4.5.0)

---
updated-dependencies:
- dependency-name: sabre/dav
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-18 02:57:11 +00:00
dependabot[bot]
e16baa527a Chore(deps): Bump @nextcloud/files from 2.1.0 to 3.0.0
Bumps [@nextcloud/files](https://github.com/nextcloud-libraries/nextcloud-files) from 2.1.0 to 3.0.0.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-files/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-files/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-files/compare/v2.1.0...v3.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-18 02:47:04 +00:00
dependabot[bot]
a1def14db3 Chore(deps): Bump actions/github-script from 6 to 7
Bumps [actions/github-script](https://github.com/actions/github-script) from 6 to 7.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-18 02:11:12 +00:00
Julius Härtl
91f1557362 Merge pull request #5294 from nextcloud/bugfix/noid/use-text-content 2023-11-17 11:38:10 +01:00
Julius Härtl
b2364bd076 fix: Use text content as result for comments
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-17 08:59:43 +01:00
Julius Härtl
b637c00ac5 Merge pull request #5293 from shoetten/feature/scroll-by-dragging 2023-11-16 20:51:45 +01:00
Simon Hötten
d17498b79e scroll board by dragging
Signed-off-by: Simon Hötten <s+git@hoetten.org>
2023-11-16 20:14:27 +01:00
Julius Härtl
2242a7d646 Merge pull request #5292 from nextcloud/bugfix/noid/compact-due 2023-11-16 10:40:33 +01:00
Julius Härtl
72da4c88d8 fix: Bring back due date indicator to compact mode
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-16 10:22:11 +01:00
Nextcloud bot
23a4e24d38 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-15 00:48:14 +00:00
Julius Härtl
4b7dbb5714 chore: Fix missing changelog for 1.12.0-beta.3
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-14 21:19:52 +01:00
Julius Härtl
93ea309a79 fix: Overview column width and hide archive boards by default
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-14 21:19:33 +01:00
Julius Härtl
5f3620da83 chore(release): Bump version to 1.12.0-beta.3
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-14 20:07:35 +01:00
Julius Härtl
eca1b8760c Merge pull request #5290 from nextcloud/bugfix/collection-2 2023-11-14 20:06:05 +01:00
Julius Härtl
446360437d test: Add cypress test for upcoming card
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-14 19:05:28 +01:00
Julius Härtl
9e41cb162d test: Add test selectors and label multiselect cypress test
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-14 18:47:20 +01:00
Julius Härtl
91ce24b7a6 fix: Bring back upcoming cards view by adapting to proper API return value
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-14 18:11:10 +01:00
Julius Härtl
bf7e7e33b2 fix: fix copy paste error to bring back label picker
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-14 18:10:32 +01:00
Julius Härtl
304dd0101b Merge pull request #5287 from nextcloud/bugfix/noid/access-done 2023-11-14 11:50:55 +01:00
Julius Härtl
110ee28447 fix: Properly get done state for dav
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-14 10:57:22 +01:00
Julius Härtl
cdba29d6fa Merge pull request #5282 from nextcloud/feat/inline-edit-new 2023-11-14 08:51:16 +01:00
Nextcloud bot
2a750f666a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-14 00:43:33 +00:00
Julius Härtl
a6b561acb7 feat: Move to contenteditable for inline title editing
fix #2563
fix #4522

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-14 00:18:19 +01:00
Julius Härtl
2703f7111a chore(release): Bump version to 1.12.0-beta.2
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 19:46:33 +01:00
Julius Härtl
54ff02bcdb Merge pull request #5285 from nextcloud/bugfix/5283 2023-11-13 16:50:08 +01:00
Julius Härtl
488cdbcd93 fix: Properly handle adding new tags through multiselect
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 15:54:20 +01:00
Julius Härtl
bb51988ddb Merge pull request #5281 from nextcloud/perf/initial-state 2023-11-13 15:17:04 +01:00
Julius Härtl
3ef2bcee3b Merge pull request #5280 from nextcloud/bugfix/multiple 2023-11-13 15:16:52 +01:00
Julius Härtl
05020b08b8 Merge pull request #5264 from nextcloud/fix/design 2023-11-13 15:16:39 +01:00
Julius Härtl
030ad0f20d Merge pull request #5284 from nextcloud/bugfix/noid/no-token-session 2023-11-13 14:03:53 +01:00
Julius Härtl
4e10f80eb1 fix: Avoid throwing errors if no token provided on close
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 12:33:41 +01:00
Julius Härtl
1a57c10741 perf: Already pass board list as initial state
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 09:05:43 +01:00
Julius Härtl
8ccc12433e fix: Adapt reference url patterns to new routes
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 09:00:57 +01:00
Julius Härtl
7127f88318 fix: Keep existing links working
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 09:00:57 +01:00
Julius Härtl
9f98f0bd5f fix: Switch to route based urls (fix #4467)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 09:00:57 +01:00
Julius Härtl
29d5913e8b fix: Make sure to always update card description when navigating awayfix
fix #5254
fix #2705

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 09:00:56 +01:00
Julius Härtl
587b44f7b9 fix: Set fixed height for card modal (fix #4296)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 09:00:56 +01:00
Julius Härtl
8eb2f48d85 fix: Always load proper dashboard js
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 09:00:56 +01:00
Julius Härtl
bd122b0d74 fix: More fitting click target for title editing
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 09:00:56 +01:00
Julius Härtl
f24123c686 fix: Use localCompare to sort labels
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 09:00:56 +01:00
Julius Härtl
6f6d6282bc fix: Hide unavailable card menu entries for archived card view
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 09:00:56 +01:00
Julius Härtl
c876e87990 fix: Disable dragging archived cards (fix #3271)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 09:00:56 +01:00
Nextcloud bot
bd515c125e Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-13 00:41:32 +00:00
Julius Härtl
342d9beaf6 fix: Add title with absolute date time to activity (fix #4508, fix #2122)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-12 09:09:52 +01:00
Julius Härtl
ee1a3e0515 fix: Detect end of the activity responses (fix #3395)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-12 09:09:52 +01:00
Julius Härtl
265c4c4039 fix: Use full card menu everywhere (fix #3993)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-12 09:09:52 +01:00
Julius Härtl
58180272ec fix: Expose card actions in the card menu (fix #3180)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-12 09:09:52 +01:00
Julius Härtl
ce0cb78aa3 Merge pull request #5277 from nextcloud/automated/noid/main-fix-npm-audit 2023-11-12 09:06:29 +01:00
Julius Härtl
7cdd2087dd Merge pull request #5275 from nextcloud/automated/noid/main-update-nextcloud-ocp 2023-11-12 09:03:08 +01:00
nextcloud-command
8711b3f9c3 chore(deps): fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2023-11-12 04:05:44 +00:00
nextcloud-command
769c320ce6 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-11-12 02:45:36 +00:00
Nextcloud bot
6950affc84 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-12 00:40:48 +00:00
Julius Härtl
b360ba66c0 fix: Style new card input and buttons
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-11 20:18:23 +01:00
dependabot[bot]
5a54ea12cf Merge pull request #5268 from nextcloud/dependabot/github_actions/shivammathur/setup-php-2.27.1 2023-11-11 03:38:32 +00:00
dependabot[bot]
66ae730276 Merge pull request #5267 from nextcloud/dependabot/npm_and_yarn/main/cypress-13.5.0 2023-11-11 03:32:11 +00:00
dependabot[bot]
2d72aa1330 Merge pull request #5266 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/dialogs-4.2.2 2023-11-11 03:28:36 +00:00
dependabot[bot]
21a7131728 Chore(deps): Bump shivammathur/setup-php from 2.27.0 to 2.27.1
Bumps [shivammathur/setup-php](https://github.com/shivammathur/setup-php) from 2.27.0 to 2.27.1.
- [Release notes](https://github.com/shivammathur/setup-php/releases)
- [Commits](https://github.com/shivammathur/setup-php/compare/2.27.0...2.27.1)

---
updated-dependencies:
- dependency-name: shivammathur/setup-php
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-11 02:14:51 +00:00
dependabot[bot]
72191c39f0 Chore(deps-dev): Bump cypress from 13.4.0 to 13.5.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.4.0 to 13.5.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/v13.4.0...v13.5.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-11 02:12:20 +00:00
dependabot[bot]
1a3f1bdeb9 Chore(deps): Bump @nextcloud/dialogs from 4.2.1 to 4.2.2
Bumps [@nextcloud/dialogs](https://github.com/nextcloud-libraries/nextcloud-dialogs) from 4.2.1 to 4.2.2.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-dialogs/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-dialogs/blob/v4.2.2/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-dialogs/compare/v4.2.1...v4.2.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-11 02:12:00 +00:00
Nextcloud bot
da8b12a7fa Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-11 00:38:51 +00:00
Julius Härtl
f16240388d ci(cypress): fix check for no due date
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-10 16:17:38 +01:00
Julius Härtl
a52de61b57 fix: Align card details better to take less space
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-10 15:44:41 +01:00
Julius Härtl
41d17494d4 fix: Fix spacing and reserved scrollbar space
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-10 12:04:34 +01:00
Nextcloud bot
8f8597def7 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-10 00:40:52 +00:00
Julius Härtl
9810faf877 chore(release): Bump version to 1.12.0-beta.1
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-09 15:21:37 +01:00
Nextcloud bot
ef958d1566 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-09 00:43:06 +00:00
Julius Härtl
6ea878e39a Merge pull request #4137 from TehThanos/master 2023-11-08 15:40:43 +01:00
Julius Härtl
51ac5db960 fix: Show tooltip for readable date
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-08 12:59:36 +01:00
Julius Härtl
71cb08b00f docs: Update API docs
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-08 12:59:36 +01:00
Julius Härtl
6d671338b6 fix: Fix tests
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-08 12:59:36 +01:00
Julius Härtl
1462d6b7e2 fix: Move all actions to the duedate section
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-08 12:59:36 +01:00
Julius Härtl
27d5861456 fix: Allow optional nullable parameters in the API
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-08 12:59:35 +01:00
Julius Härtl
c405a5729a fix: Expose done done state through CalDAV
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-08 12:59:35 +01:00
Julius Härtl
c2fd5163b0 fix: Move to storing the date instead of boolean for done state
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-08 12:59:35 +01:00
Thanos Kamber
c3b4ed6e1f Added ability to mark card as done
Closes #534

Signed-off-by: Thanos Kamber <thanos.kamber@gmail.com>
2023-11-08 12:59:27 +01:00
Julius Härtl
de4ad24cd6 Merge pull request #5262 from nextcloud/bugfix/noid/card-reference-url 2023-11-07 11:23:52 +01:00
Julius Härtl
08d30bbc23 fix: Check both card reference url patterns
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-07 09:53:12 +01:00
Julius Härtl
93e5ee7301 Merge pull request #5260 from nextcloud/bugfix/noid/postgres-index 2023-11-07 08:47:28 +01:00
Nextcloud bot
cc57e67eb5 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-07 00:49:37 +00:00
Julius Härtl
029082bf7f fix: Avoid too large index on postgres as indexing just the last_editor column is enough
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-06 17:40:57 +01:00
Julius Härtl
2140188dbf chore: bump dev version
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-06 17:29:48 +01:00
Julius Härtl
078495fcf7 Merge pull request #5258 from jamazi/main 2023-11-06 16:34:40 +01:00
jamazi
20b31f4718 Fix(test): trim whitespace before compare
Signed-off-by: jamazi <jamazi@tutanota.com>
2023-11-06 14:53:56 +03:00
Julius Härtl
9872a4bec4 Merge pull request #5257 from nextcloud/automated/noid/main-update-nextcloud-ocp 2023-11-06 08:59:38 +01:00
jamazi
2a4b3e709c add support for bidi text
fix #1959

Signed-off-by: jamazi <jamazi@tutanota.com>
2023-11-05 16:52:15 +03:00
nextcloud-command
9d3b90b098 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-11-05 02:34:15 +00:00
Nextcloud bot
30c5f276b6 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-05 00:45:36 +00:00
dependabot[bot]
8093abad96 Merge pull request #5256 from nextcloud/dependabot/github_actions/shivammathur/setup-php-2.27.0 2023-11-04 03:46:23 +00:00
dependabot[bot]
e9c6eb3be2 Merge pull request #5255 from nextcloud/dependabot/npm_and_yarn/main/cypress-13.4.0 2023-11-04 03:37:05 +00:00
dependabot[bot]
a7aff64fec Chore(deps): Bump shivammathur/setup-php from 2.26.0 to 2.27.0
Bumps [shivammathur/setup-php](https://github.com/shivammathur/setup-php) from 2.26.0 to 2.27.0.
- [Release notes](https://github.com/shivammathur/setup-php/releases)
- [Commits](https://github.com/shivammathur/setup-php/compare/2.26.0...2.27.0)

---
updated-dependencies:
- dependency-name: shivammathur/setup-php
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-04 02:57:39 +00:00
dependabot[bot]
7df322e81c Chore(deps-dev): Bump cypress from 13.3.3 to 13.4.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.3.3 to 13.4.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/v13.3.3...v13.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-04 02:39:30 +00:00
Nextcloud bot
c0644faecf Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-03 00:43:32 +00:00
Nextcloud bot
9b08e5cdfc Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-02 00:41:13 +00:00
Nextcloud bot
68191d84cd Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-01 00:45:14 +00:00
Julius Härtl
db1484dffa Merge pull request #5253 from fitrahfm/feat/tooltip-for-comment-timestamp 2023-10-31 19:49:20 +01:00
Fitrah Munir
2f16239831 feat(card): tooltip for comment timestamp
Signed-off-by: Fitrah Munir <fitrahmunir@outlook.com>
2023-10-31 15:56:21 +00:00
Nextcloud bot
7a7d40ff24 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-31 00:44:37 +00:00
Nextcloud bot
19eec1ec1a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-30 00:42:25 +00:00
Julius Härtl
fc10c99f0f Merge pull request #5249 from nextcloud/dependabot/npm_and_yarn/main/vue-and-vue-template-compiler-2.7.15 2023-10-29 21:43:44 +01:00
dependabot[bot]
9fac135d96 Merge pull request #5250 from nextcloud/dependabot/npm_and_yarn/main/cypress-13.3.3 2023-10-29 20:21:19 +00:00
dependabot[bot]
27e212163c Chore(deps-dev): Bump cypress from 13.3.2 to 13.3.3
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.3.2 to 13.3.3.
- [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/v13.3.2...v13.3.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-29 20:10:10 +00:00
dependabot[bot]
9e188cb48a Chore(deps): Bump vue and vue-template-compiler
Bumps [vue](https://github.com/vuejs/core) and [vue-template-compiler](https://github.com/vuejs/vue). These dependencies needed to be updated together.

Updates `vue` from 2.7.14 to 2.7.15
- [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)

Updates `vue-template-compiler` from 2.7.14 to 2.7.15
- [Release notes](https://github.com/vuejs/vue/releases)
- [Changelog](https://github.com/vuejs/vue/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue/compare/v2.7.14...v2.7.15)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-29 20:09:37 +00:00
Julius Härtl
47823f9417 Update dependabot.yml
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-10-29 21:08:57 +01:00
Julius Härtl
dc40bc189b Merge pull request #5246 from nextcloud/automated/noid/main-update-nextcloud-ocp 2023-10-29 18:28:48 +01:00
nextcloud-command
781b68f255 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-10-29 02:33:12 +00:00
Julius Härtl
d1e781872b Merge pull request #5240 from nextcloud/dependabot/github_actions/actions/setup-node-4 2023-10-28 13:57:06 +02:00
dependabot[bot]
d9e9c4be8b Merge pull request #5243 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/router-2.2.0 2023-10-28 04:08:57 +00:00
dependabot[bot]
594c661394 Chore(deps): Bump @nextcloud/router from 2.1.2 to 2.2.0
Bumps [@nextcloud/router](https://github.com/nextcloud/nextcloud-router) from 2.1.2 to 2.2.0.
- [Release notes](https://github.com/nextcloud/nextcloud-router/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-router/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-router/compare/v2.1.2...v2.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-28 02:32:27 +00:00
dependabot[bot]
1a05a88c31 Chore(deps): Bump actions/setup-node from 3 to 4
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3 to 4.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-28 01:37:55 +00:00
dependabot[bot]
b636493396 Merge pull request #5236 from nextcloud/dependabot/npm_and_yarn/browserify-sign-4.2.2 2023-10-27 18:58:50 +00:00
dependabot[bot]
ca48120568 Chore(deps): Bump browserify-sign from 4.2.1 to 4.2.2
Bumps [browserify-sign](https://github.com/crypto-browserify/browserify-sign) from 4.2.1 to 4.2.2.
- [Changelog](https://github.com/browserify/browserify-sign/blob/main/CHANGELOG.md)
- [Commits](https://github.com/crypto-browserify/browserify-sign/compare/v4.2.1...v4.2.2)

---
updated-dependencies:
- dependency-name: browserify-sign
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-27 18:50:44 +00:00
Nextcloud bot
cdc9b7eb15 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-26 00:44:20 +00:00
Nextcloud bot
ca06249e68 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-25 00:59:15 +00:00
Julius Härtl
d1c7567e4e Merge pull request #5234 from nextcloud/chore/php8.3 2023-10-24 12:44:21 +02:00
Nextcloud bot
1792e626f2 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-24 00:44:25 +00:00
Julius Härtl
3a63030787 chore(php): Add PHP 8.3 to test matrix
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-10-23 22:28:03 +02:00
Nextcloud bot
aa793fab6d Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-23 00:42:45 +00:00
Julius Härtl
81258ff62f Merge pull request #5231 from nextcloud/automated/noid/main-fix-npm-audit 2023-10-22 16:45:46 +02:00
Julius Härtl
28d7f6618b Merge pull request #5229 from nextcloud/automated/noid/main-update-nextcloud-ocp 2023-10-22 10:51:02 +02:00
nextcloud-command
3850a1747c chore(deps): fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2023-10-22 03:22:56 +00:00
nextcloud-command
9f4421153e chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-10-22 02:39:39 +00:00
Nextcloud bot
de22cf0280 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-22 00:45:24 +00:00
dependabot[bot]
856f3c94d9 Merge pull request #5223 from nextcloud/dependabot/github_actions/peter-evans/create-or-update-comment-3.1.0 2023-10-21 04:47:40 +00:00
dependabot[bot]
8f077979f1 Merge pull request #5220 from nextcloud/dependabot/npm_and_yarn/main/cypress-13.3.2 2023-10-21 03:49:14 +00:00
dependabot[bot]
1e7bae293c Merge pull request #5219 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/moment-1.2.2 2023-10-21 03:49:10 +00:00
dependabot[bot]
deea18b5d3 Chore(deps): Bump peter-evans/create-or-update-comment
Bumps [peter-evans/create-or-update-comment](https://github.com/peter-evans/create-or-update-comment) from 3.0.2 to 3.1.0.
- [Release notes](https://github.com/peter-evans/create-or-update-comment/releases)
- [Commits](c6c9a1a660...23ff15729e)

---
updated-dependencies:
- dependency-name: peter-evans/create-or-update-comment
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-21 01:39:31 +00:00
dependabot[bot]
a12d9f2f36 Chore(deps-dev): Bump cypress from 13.3.1 to 13.3.2
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.3.1 to 13.3.2.
- [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/v13.3.1...v13.3.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-21 01:10:03 +00:00
dependabot[bot]
2f5b5ec713 Chore(deps): Bump @nextcloud/moment from 1.2.1 to 1.2.2
Bumps [@nextcloud/moment](https://github.com/nextcloud/nextcloud-moment) from 1.2.1 to 1.2.2.
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-moment/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-moment/compare/v1.2.1...v1.2.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-21 01:09:40 +00:00
Nextcloud bot
0799b7e394 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-21 00:43:25 +00:00
Nextcloud bot
6c6c3de61a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-20 00:44:43 +00:00
Julius Härtl
8ebb6cb543 Merge pull request #5216 from FundreasFrohsinn/patch-1 2023-10-19 14:59:03 +02:00
Andreas Rosing
13b2796d91 fixes minor spelling error
Signed-off-by: Andreas Rosing <FundreasFrohsinn@users.noreply.github.com>
2023-10-19 14:27:18 +02:00
Nextcloud bot
89a93b0f96 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-19 00:43:46 +00:00
Julius Härtl
7df062d97a Merge pull request #4668 from nextcloud/enh/native-datepicker 2023-10-18 17:24:50 +02:00
Julius Härtl
7f36dd2b9d fix: remove depecated OCA.Search
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-10-18 15:03:45 +02:00
Julius Härtl
7e0765adb0 tests: Date time picker tests
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-10-18 15:03:45 +02:00
Julius Härtl
42461a74ea enh: Move to native datetime picker component
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-10-18 15:03:45 +02:00
Julius Härtl
ea6795694b Merge pull request #2658 from BKapelari/More-Dashboard-Widgets-#2643 2023-10-18 12:44:19 +02:00
Julius Härtl
7c774bd988 style: Fix stylelint
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-10-18 12:10:34 +02:00
Julius Härtl
0b68948a0f fix: Switch to new component name
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-10-18 11:48:03 +02:00
Marcel Klehr
6aaa9bea9c Rename today and tomorrow widgets
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2023-10-18 11:44:34 +02:00
Marcel Klehr
a37e7192aa Vuex: Run overview#loadUpcoming only once
needed for dashboard widgets

Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2023-10-18 11:44:34 +02:00
Marcel Klehr
515d9cbd65 Dashboard widgets: Factor out a card component
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2023-10-18 11:44:34 +02:00
Bernhard Kapelari
7b57c92f12 basic functions
Signed-off-by: Bernhard Kapelari <bernhard@kapelari.com>

First feedback

Signed-off-by: Bernhard Kapelari <bernhard@kapelari.com>

lint:fix

Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2023-10-18 11:44:31 +02:00
Nextcloud bot
8aa4fdcec5 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-18 01:08:10 +00:00
Julius Härtl
320ac3f1d4 Merge pull request #5215 from nextcloud/dependabot/npm_and_yarn/babel/traverse-7.23.2 2023-10-17 22:59:23 +02:00
dependabot[bot]
30eb743b64 Chore(deps-dev): Bump @babel/traverse from 7.23.0 to 7.23.2
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.23.0 to 7.23.2.
- [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.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-17 20:31:37 +00:00
Julius Härtl
7ce6ce3958 Merge pull request #5212 from nextcloud/ci/fix-fileselector
ci(cypress): Fix file picker selector
2023-10-17 22:30:38 +02:00
Julius Härtl
9f66712dc2 ci(cypress): Disable record
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-10-17 22:22:55 +02:00
Julius Härtl
bab1395f93 ci(cypress): Increase timeout
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-10-17 21:23:19 +02:00
Julius Härtl
93c6af4d5b ci(cypress): Use node 20
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-10-17 21:23:19 +02:00
Julius Härtl
38ae668218 ci(cypress): Fix file picker selector
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-10-17 21:23:19 +02:00
Julius Härtl
09fd1e0fee style: Fix trailing commas
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-10-17 15:42:49 +02:00
Julius Härtl
0b471b89b3 Merge pull request #5035 from jszeibert/enh/CardCover
Card Cover Images
2023-10-17 15:19:12 +02:00
Julius Härtl
24b7c232f2 fix: Only request attachments if there are any
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-10-17 14:10:57 +02:00
Johannes Szeibert
6e1e6a8957 introduce Card Covers
Signed-off-by: Johannes Szeibert <johannes@szeibert.de>
2023-10-17 14:10:45 +02:00
Nextcloud bot
bf28940608 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-17 00:46:42 +00:00
Julius Härtl
6743368f1f Merge pull request #5133 from privatemaker/fix/aria-title-to-buttons
add attributes aria-label= and title= to Filters & View Modes buttons
2023-10-16 23:02:35 +02:00
Julius Härtl
1564da544e Update src/components/Controls.vue
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-10-16 22:54:56 +02:00
Julius Härtl
4ab35e0c89 Merge pull request #5207 from nextcloud/automated/noid/main-update-nextcloud-ocp
[main] Update nextcloud/ocp dependency
2023-10-16 10:22:10 +02:00
Julius Härtl
f2f6f80a1d Merge pull request #5210 from nextcloud/automated/noid/main-fix-npm-audit 2023-10-16 10:15:36 +02:00
nextcloud-command
b0dc54117b chore(deps): fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2023-10-15 03:29:30 +00:00
nextcloud-command
f87b4ae837 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-10-15 02:42:41 +00:00
dependabot[bot]
36bc5d1f8f Merge pull request #5203 from nextcloud/dependabot/npm_and_yarn/main/cypress-13.3.1 2023-10-14 06:21:23 +00:00
dependabot[bot]
16f99901ee Merge pull request #5204 from nextcloud/dependabot/npm_and_yarn/main/babel/runtime-7.23.2 2023-10-14 04:01:43 +00:00
dependabot[bot]
34a4db4d42 Chore(deps-dev): Bump cypress from 13.3.0 to 13.3.1
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.3.0 to 13.3.1.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.3.0...v13.3.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-14 03:59:19 +00:00
dependabot[bot]
56161aa4a2 Merge pull request #5202 from nextcloud/dependabot/npm_and_yarn/main/relative-ci/agent-4.1.10 2023-10-14 03:58:28 +00:00
dependabot[bot]
ef058908ae Chore(deps): Bump @babel/runtime from 7.23.1 to 7.23.2
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.23.1 to 7.23.2.
- [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.23.2/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-14 01:33:18 +00:00
dependabot[bot]
1207d6c28f Chore(deps-dev): Bump @relative-ci/agent from 4.1.9 to 4.1.10
Bumps [@relative-ci/agent](https://github.com/relative-ci/agent) from 4.1.9 to 4.1.10.
- [Release notes](https://github.com/relative-ci/agent/releases)
- [Commits](https://github.com/relative-ci/agent/compare/v4.1.9...v4.1.10)

---
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>
2023-10-14 01:32:21 +00:00
Nextcloud bot
0f75f2f3fb Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-14 00:44:01 +00:00
Nextcloud bot
ca4f58d509 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-13 01:14:50 +00:00
Nextcloud bot
4fa737f30d Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-12 00:42:10 +00:00
Nextcloud bot
096bef4101 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-11 00:47:33 +00:00
Private Maker
2ab186a688 add attributes aria-label= and title= to Filters & View Modes buttons
Signed-off-by: Private Maker <privatemaker@posteo.net>
2023-10-10 08:39:12 +02:00
Julius Härtl
028b4c0bb7 Merge pull request #5164 from nextcloud/Jerome-Herbinet-replace-timeline-with-activity
Replace "Timeline" wording with "Activity" in order to be consistent with equivalent contexts throughout Nextcloud
2023-10-10 08:38:10 +02:00
Nextcloud bot
b789d45cb5 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-10 01:07:35 +00:00
Julius Härtl
47fc41eb93 Merge pull request #5168 from nextcloud/Jerome-Herbinet-better-wordings-for--board-creation-limitation 2023-10-09 13:52:02 +02:00
Jérôme Herbinet
c96399bbad Board creation limitation : More understandable wordings
Signed-off-by: Jérôme Herbinet <33763786+Jerome-Herbinet@users.noreply.github.com>

Update src/components/navigation/AppNavigation.vue

Signed-off-by: Jérôme Herbinet <33763786+Jerome-Herbinet@users.noreply.github.com>
Co-Authored-By: Julius Härtl <jus@bitgrid.net>
2023-10-09 13:31:58 +02:00
Julius Härtl
1238910a11 Merge pull request #5160 from nextcloud/dependabot/npm_and_yarn/cypress/request-and-nextcloud/cypress-and-cypress-3.0.1
Chore(deps): Bump @cypress/request, @nextcloud/cypress and cypress
2023-10-09 12:45:51 +02:00
Julius Härtl
6603c46a9c Merge pull request #5161 from nextcloud/automated/noid/main-update-nextcloud-ocp
[main] Update nextcloud/ocp dependency
2023-10-09 12:16:52 +02:00
Nextcloud bot
91abf77a34 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-09 00:44:25 +00:00
nextcloud-command
1d27822e5d chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-10-08 02:32:16 +00:00
Nextcloud bot
4f92eda181 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-08 00:46:01 +00:00
Nextcloud bot
1915e08048 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-07 01:19:04 +00:00
Nextcloud bot
a2ca625012 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-06 00:42:32 +00:00
Nextcloud bot
5909098257 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-04 00:42:46 +00:00
Nextcloud bot
77a662f47a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-03 00:41:58 +00:00
Nextcloud bot
d2a58213e5 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-02 00:42:36 +00:00
dependabot[bot]
e7e21ca2da Merge pull request #5180 from nextcloud/dependabot/npm_and_yarn/main/dompurify-3.0.6 2023-09-30 06:05:54 +00:00
dependabot[bot]
c169a9f651 Chore(deps): Bump @cypress/request, @nextcloud/cypress and cypress
Bumps [@cypress/request](https://github.com/cypress-io/request) to 3.0.1 and updates ancestor dependencies [@cypress/request](https://github.com/cypress-io/request), [@nextcloud/cypress](https://github.com/nextcloud/nextcloud-cypress) and [cypress](https://github.com/cypress-io/cypress). These dependencies need to be updated together.


Updates `@cypress/request` from 2.88.12 to 3.0.1
- [Release notes](https://github.com/cypress-io/request/releases)
- [Changelog](https://github.com/cypress-io/request/blob/master/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/request/compare/v2.88.12...v3.0.1)

Updates `@nextcloud/cypress` from 1.0.0-beta.2 to 1.0.0-beta.6
- [Release notes](https://github.com/nextcloud/nextcloud-cypress/releases)
- [Commits](https://github.com/nextcloud/nextcloud-cypress/compare/v1.0.0-beta.2...v1.0.0-beta.6)

Updates `cypress` from 12.17.4 to 13.2.0
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.17.4...v13.2.0)

---
updated-dependencies:
- dependency-name: "@cypress/request"
  dependency-type: indirect
- dependency-name: "@nextcloud/cypress"
  dependency-type: direct:development
- dependency-name: cypress
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-30 02:43:16 +00:00
dependabot[bot]
ca959ec1fd Chore(deps): Bump dompurify from 3.0.5 to 3.0.6
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.0.5 to 3.0.6.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.0.5...3.0.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-30 02:43:08 +00:00
dependabot[bot]
218146a7f3 Merge pull request #5181 from nextcloud/dependabot/npm_and_yarn/main/markdown-it-13.0.2 2023-09-30 02:41:41 +00:00
dependabot[bot]
b672fa333f Merge pull request #5179 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/eslint-config-8.3.0 2023-09-30 02:41:03 +00:00
dependabot[bot]
5501641cb8 Merge pull request #5176 from nextcloud/dependabot/composer/justinrainbow/json-schema-5.2.13 2023-09-30 02:39:16 +00:00
dependabot[bot]
9c842ff511 Merge pull request #5177 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/vue-7.12.6 2023-09-30 02:38:33 +00:00
dependabot[bot]
a2af03606c Merge pull request #5175 from nextcloud/dependabot/npm_and_yarn/main/babel/runtime-7.23.1 2023-09-30 02:36:31 +00:00
dependabot[bot]
e19eb9d908 Chore(deps): Bump markdown-it from 13.0.1 to 13.0.2
Bumps [markdown-it](https://github.com/markdown-it/markdown-it) from 13.0.1 to 13.0.2.
- [Changelog](https://github.com/markdown-it/markdown-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/markdown-it/markdown-it/compare/13.0.1...13.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-30 01:22:56 +00:00
dependabot[bot]
c5f830fe39 Chore(deps-dev): Bump @nextcloud/eslint-config from 8.2.1 to 8.3.0
Bumps [@nextcloud/eslint-config](https://github.com/nextcloud-libraries/eslint-config) from 8.2.1 to 8.3.0.
- [Release notes](https://github.com/nextcloud-libraries/eslint-config/releases)
- [Changelog](https://github.com/nextcloud-libraries/eslint-config/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/eslint-config/compare/v8.2.1...v8.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-30 01:22:19 +00:00
dependabot[bot]
bcb505b78b Chore(deps): Bump @nextcloud/vue from 7.12.5 to 7.12.6
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.12.5 to 7.12.6.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-vue/blob/v7.12.6/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v7.12.5...v7.12.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-30 01:20:48 +00:00
dependabot[bot]
8bbc45c6c8 Chore(deps): Bump justinrainbow/json-schema from 5.2.12 to 5.2.13
Bumps [justinrainbow/json-schema](https://github.com/justinrainbow/json-schema) from 5.2.12 to 5.2.13.
- [Release notes](https://github.com/justinrainbow/json-schema/releases)
- [Commits](https://github.com/justinrainbow/json-schema/compare/5.2.12...v5.2.13)

---
updated-dependencies:
- dependency-name: justinrainbow/json-schema
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-30 01:20:31 +00:00
dependabot[bot]
c63da670ec Chore(deps): Bump @babel/runtime from 7.22.15 to 7.23.1
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.22.15 to 7.23.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.23.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>
2023-09-30 01:20:28 +00:00
Nextcloud bot
307db42dc4 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-09-28 00:43:49 +00:00
Jérôme Herbinet
97b0eb64ad Replace "Timeline" with "Activity" in CardSidebar.vue
Signed-off-by: Jérôme Herbinet <33763786+Jerome-Herbinet@users.noreply.github.com>
2023-09-26 14:22:31 +02:00
Jérôme Herbinet
691d267186 Replace "Timeline" with "Activity" in BoardSidebar.vue
Signed-off-by: Jérôme Herbinet <33763786+Jerome-Herbinet@users.noreply.github.com>
2023-09-26 14:18:11 +02:00
Nextcloud bot
e8dd287528 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-09-26 00:43:48 +00:00
dependabot[bot]
5f9c0f0939 Merge pull request #5155 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/dialogs-4.2.1 2023-09-23 07:52:52 +00:00
dependabot[bot]
1a473f4e44 Merge pull request #5159 from nextcloud/dependabot/composer/phpunit/phpunit-9.6.13 2023-09-23 07:31:50 +00:00
dependabot[bot]
a86d8abffd Merge pull request #5154 from nextcloud/dependabot/npm_and_yarn/main/relative-ci/agent-4.1.9 2023-09-23 04:19:14 +00:00
dependabot[bot]
34960d04b9 Chore(deps): Bump @nextcloud/dialogs from 4.2.0 to 4.2.1
Bumps [@nextcloud/dialogs](https://github.com/nextcloud-libraries/nextcloud-dialogs) from 4.2.0 to 4.2.1.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-dialogs/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-dialogs/blob/v4.2.1/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-dialogs/compare/v4.2.0...v4.2.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-23 03:50:50 +00:00
dependabot[bot]
f9e4d24b62 Merge pull request #5151 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/vue-7.12.5 2023-09-23 03:49:59 +00:00
dependabot[bot]
b2b724fb89 Merge pull request #5150 from nextcloud/dependabot/npm_and_yarn/main/eslint-plugin-cypress-2.15.1 2023-09-23 03:49:21 +00:00
dependabot[bot]
cea940f96d Merge pull request #5152 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/auth-2.2.1 2023-09-23 03:49:12 +00:00
dependabot[bot]
d3f7d150b4 Chore(deps-dev): Bump phpunit/phpunit from 9.6.12 to 9.6.13
Bumps [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit) from 9.6.12 to 9.6.13.
- [Changelog](https://github.com/sebastianbergmann/phpunit/blob/9.6.13/ChangeLog-9.6.md)
- [Commits](https://github.com/sebastianbergmann/phpunit/compare/9.6.12...9.6.13)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-23 03:11:34 +00:00
dependabot[bot]
e3999de287 Chore(deps-dev): Bump @relative-ci/agent from 4.1.8 to 4.1.9
Bumps [@relative-ci/agent](https://github.com/relative-ci/agent) from 4.1.8 to 4.1.9.
- [Release notes](https://github.com/relative-ci/agent/releases)
- [Commits](https://github.com/relative-ci/agent/compare/v4.1.8...v4.1.9)

---
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>
2023-09-23 01:25:08 +00:00
dependabot[bot]
a5340d7419 Chore(deps): Bump @nextcloud/auth from 2.1.0 to 2.2.1
Bumps [@nextcloud/auth](https://github.com/nextcloud/nextcloud-auth) from 2.1.0 to 2.2.1.
- [Release notes](https://github.com/nextcloud/nextcloud-auth/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-auth/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-auth/compare/v2.1.0...v2.2.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-23 01:24:02 +00:00
dependabot[bot]
0eb5374c6d Chore(deps): Bump @nextcloud/vue from 7.12.4 to 7.12.5
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.12.4 to 7.12.5.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-vue/blob/v7.12.5/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v7.12.4...v7.12.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-23 01:23:44 +00:00
dependabot[bot]
a85ccf39cf Chore(deps-dev): Bump eslint-plugin-cypress from 2.14.0 to 2.15.1
Bumps [eslint-plugin-cypress](https://github.com/cypress-io/eslint-plugin-cypress) from 2.14.0 to 2.15.1.
- [Release notes](https://github.com/cypress-io/eslint-plugin-cypress/releases)
- [Commits](https://github.com/cypress-io/eslint-plugin-cypress/compare/v2.14.0...v2.15.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-23 01:23:21 +00:00
Nextcloud bot
cfbed5e612 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-09-22 00:47:57 +00:00
Julius Härtl
ae81baf2d4 Merge pull request #5131 from nextcloud/automated/noid/main-update-nextcloud-ocp 2023-09-17 17:52:04 +02:00
nextcloud-command
4b7e8921b1 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-09-17 02:36:48 +00:00
dependabot[bot]
5f3017d08b Merge pull request #5127 from nextcloud/dependabot/composer/phpunit/phpunit-9.6.12 2023-09-16 03:56:27 +00:00
dependabot[bot]
14e03b390c Merge pull request #5126 from nextcloud/dependabot/npm_and_yarn/main/jest-29.7.0 2023-09-16 03:34:31 +00:00
dependabot[bot]
a034b05c00 Merge pull request #5125 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/dialogs-4.2.0 2023-09-16 03:33:42 +00:00
dependabot[bot]
74e8c66e09 Chore(deps-dev): Bump phpunit/phpunit from 9.6.11 to 9.6.12
Bumps [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit) from 9.6.11 to 9.6.12.
- [Changelog](https://github.com/sebastianbergmann/phpunit/blob/9.6.12/ChangeLog-9.6.md)
- [Commits](https://github.com/sebastianbergmann/phpunit/compare/9.6.11...9.6.12)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-16 02:13:55 +00:00
dependabot[bot]
6ca33cd75a Chore(deps-dev): Bump jest from 29.6.4 to 29.7.0
Bumps [jest](https://github.com/jestjs/jest/tree/HEAD/packages/jest) from 29.6.4 to 29.7.0.
- [Release notes](https://github.com/jestjs/jest/releases)
- [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jestjs/jest/commits/v29.7.0/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>
2023-09-16 02:07:07 +00:00
dependabot[bot]
058720536e Chore(deps): Bump @nextcloud/dialogs from 4.1.0 to 4.2.0
Bumps [@nextcloud/dialogs](https://github.com/nextcloud-libraries/nextcloud-dialogs) from 4.1.0 to 4.2.0.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-dialogs/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-dialogs/blob/v4.2.0/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-dialogs/compare/v4.1.0...v4.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-16 02:06:24 +00:00
dependabot[bot]
283aca847c Merge pull request #5121 from nextcloud/dependabot/github_actions/shivammathur/setup-php-2.26.0 2023-09-16 01:09:26 +00:00
dependabot[bot]
3077ee4136 Chore(deps): Bump shivammathur/setup-php from 2.25.5 to 2.26.0
Bumps [shivammathur/setup-php](https://github.com/shivammathur/setup-php) from 2.25.5 to 2.26.0.
- [Release notes](https://github.com/shivammathur/setup-php/releases)
- [Commits](https://github.com/shivammathur/setup-php/compare/2.25.5...2.26.0)

---
updated-dependencies:
- dependency-name: shivammathur/setup-php
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-16 01:02:03 +00:00
Julius Härtl
57d6436b34 Merge pull request #5096 from magikmw/main 2023-09-13 13:11:35 +02:00
Michał Walczak
1d70055dd3 fix: export doesn't handle lists with no cards
Signed-off-by: Michał Walczak <mw@michalwalczak.eu>
2023-09-13 11:02:24 +02:00
Julius Härtl
80eddeed61 Merge pull request #5088 from nextcloud/backport/5027/main 2023-09-11 22:14:11 +02:00
Julius Härtl
2496d4d0a1 Merge pull request #5115 from nextcloud/automated/noid/main-update-nextcloud-ocp 2023-09-11 22:12:58 +02:00
Nextcloud bot
4ad992da42 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-09-11 00:42:47 +00:00
nextcloud-command
b5d90de7bd chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-09-10 02:29:07 +00:00
Julius Härtl
87d987b158 Merge pull request #5097 from nextcloud/dependabot/npm_and_yarn/main/url-search-params-polyfill-8.2.5 2023-09-09 10:09:26 +02:00
dependabot[bot]
4175e0b62c Chore(deps): Bump url-search-params-polyfill from 8.2.4 to 8.2.5
Bumps [url-search-params-polyfill](https://github.com/jerrybendy/url-search-params-polyfill) from 8.2.4 to 8.2.5.
- [Release notes](https://github.com/jerrybendy/url-search-params-polyfill/releases)
- [Commits](https://github.com/jerrybendy/url-search-params-polyfill/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-09 07:49:53 +00:00
Julius Härtl
ff45f243c9 Merge pull request #5100 from nextcloud/dependabot/npm_and_yarn/main/babel/runtime-7.22.15 2023-09-09 09:49:05 +02:00
Julius Härtl
77bc2e38d0 Merge pull request #5098 from nextcloud/dependabot/npm_and_yarn/main/vue/vue2-jest-29.2.6 2023-09-09 09:48:37 +02:00
Julius Härtl
c1a5d818e0 Merge pull request #5099 from nextcloud/dependabot/npm_and_yarn/main/p-queue-7.4.1 2023-09-09 09:48:30 +02:00
Julius Härtl
9ae297b8a9 ci(cypress): Fix selectors for new file picker
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-09-09 09:36:04 +02:00
Julius Härtl
63c9eb162d Merge pull request #5114 from nextcloud/dependabot/github_actions/actions/checkout-4 2023-09-09 09:07:44 +02:00
dependabot[bot]
8d64921213 Chore(deps): Bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-09 02:34:17 +00:00
dependabot[bot]
4b53a94a30 Chore(deps): Bump @babel/runtime from 7.22.11 to 7.22.15
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.22.11 to 7.22.15.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.22.15/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-09 01:14:01 +00:00
dependabot[bot]
083e4ec42e Chore(deps): Bump p-queue from 7.4.0 to 7.4.1
Bumps [p-queue](https://github.com/sindresorhus/p-queue) from 7.4.0 to 7.4.1.
- [Release notes](https://github.com/sindresorhus/p-queue/releases)
- [Commits](https://github.com/sindresorhus/p-queue/compare/v7.4.0...v7.4.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-09 01:13:47 +00:00
dependabot[bot]
8e1055bc49 Chore(deps-dev): Bump @vue/vue2-jest from 29.2.5 to 29.2.6
Bumps [@vue/vue2-jest](https://github.com/vuejs/vue-jest) from 29.2.5 to 29.2.6.
- [Release notes](https://github.com/vuejs/vue-jest/releases)
- [Commits](https://github.com/vuejs/vue-jest/compare/v29.2.5...v29.2.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-09 01:13:35 +00:00
Nextcloud bot
3a8579faca Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-09-09 00:41:58 +00:00
Nextcloud bot
85daaf3127 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-09-07 00:45:15 +00:00
Julius Härtl
54cc67da93 Merge pull request #5045 from nextcloud/enh/dark-mode 2023-09-04 10:06:20 +02:00
Julius Härtl
05b2648e0b Merge pull request #5077 from nextcloud/dependabot/composer/tests/integration/guzzlehttp/guzzle-7.8.0 2023-09-04 08:41:02 +02:00
Julius Härtl
2f6e46ee15 Merge pull request #5080 from nextcloud/dependabot/npm_and_yarn/main/p-queue-7.4.0 2023-09-04 08:40:45 +02:00
Julius Härtl
906a2b3799 Merge pull request #5082 from nextcloud/automated/noid/main-update-nextcloud-ocp 2023-09-04 08:40:04 +02:00
nextcloud-command
bd12608ff7 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-09-03 02:33:01 +00:00
dependabot[bot]
26d9626f2a Chore(deps): Bump p-queue from 7.3.4 to 7.4.0
Bumps [p-queue](https://github.com/sindresorhus/p-queue) from 7.3.4 to 7.4.0.
- [Release notes](https://github.com/sindresorhus/p-queue/releases)
- [Commits](https://github.com/sindresorhus/p-queue/compare/v7.3.4...v7.4.0)

---
updated-dependencies:
- dependency-name: p-queue
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-02 02:32:42 +00:00
dependabot[bot]
d61395717c Chore(deps-dev): Update guzzlehttp/guzzle requirement
Updates the requirements on [guzzlehttp/guzzle](https://github.com/guzzle/guzzle) to permit the latest version.
- [Release notes](https://github.com/guzzle/guzzle/releases)
- [Changelog](https://github.com/guzzle/guzzle/blob/7.8/CHANGELOG.md)
- [Commits](https://github.com/guzzle/guzzle/compare/7.7.0...7.8.0)

---
updated-dependencies:
- dependency-name: guzzlehttp/guzzle
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-02 01:52:15 +00:00
Nextcloud bot
d21c6e1b3b Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-09-02 00:42:33 +00:00
Julius Härtl
d3515de265 style: Fix code style
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-09-01 14:45:22 +02:00
Julius Härtl
a8839ccb64 fix: Use Lab for calculating text contrast color value (fix #3084)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-09-01 14:45:22 +02:00
Julius Härtl
f53785ef54 fix: Due date badge in dark mode / compact mode (fix #4386)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-09-01 14:45:22 +02:00
Julius Härtl
08bc7b163b feat: Enhance dark mode (fix #5034)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-09-01 14:45:22 +02:00
Nextcloud bot
27a1e7eb83 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-09-01 00:45:50 +00:00
Nextcloud bot
9313c98055 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-31 00:50:49 +00:00
Nextcloud bot
54670ffdbf Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-30 00:47:47 +00:00
Julius Härtl
ce05997174 Merge pull request #5047 from nextcloud/feature/update-smart-picker-links 2023-08-28 08:38:22 +02:00
Julius Härtl
8a8bc33bb0 Merge pull request #5062 from nextcloud/dependabot/github_actions/cypress-io/github-action-6 2023-08-28 08:37:38 +02:00
Julius Härtl
72e17ce70e Merge pull request #5070 from nextcloud/automated/noid/main-update-nextcloud-ocp 2023-08-28 08:07:53 +02:00
Nextcloud bot
3c2eb738ff Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-28 00:42:42 +00:00
nextcloud-command
15f9c94c64 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-08-27 02:26:17 +00:00
dependabot[bot]
7e92c0dabd Merge pull request #5067 from nextcloud/dependabot/npm_and_yarn/main/jest-29.6.4 2023-08-26 06:26:56 +00:00
dependabot[bot]
a4f5ac1504 Merge pull request #5069 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/vue-7.12.4 2023-08-26 05:21:07 +00:00
dependabot[bot]
c08b829d1a Merge pull request #5068 from nextcloud/dependabot/npm_and_yarn/main/babel/runtime-7.22.11 2023-08-26 05:16:22 +00:00
dependabot[bot]
e68865ed84 Chore(deps-dev): Bump jest from 29.6.2 to 29.6.4
Bumps [jest](https://github.com/jestjs/jest/tree/HEAD/packages/jest) from 29.6.2 to 29.6.4.
- [Release notes](https://github.com/jestjs/jest/releases)
- [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jestjs/jest/commits/v29.6.4/packages/jest)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-26 05:12:22 +00:00
dependabot[bot]
35b0e2fbe9 Merge pull request #5066 from nextcloud/dependabot/npm_and_yarn/main/relative-ci/agent-4.1.8 2023-08-26 05:11:30 +00:00
dependabot[bot]
8ebb881028 Merge pull request #5065 from nextcloud/dependabot/composer/psalm/phar-5.15.0 2023-08-26 05:11:06 +00:00
dependabot[bot]
ea6d2b0135 Merge pull request #5064 from nextcloud/dependabot/composer/phpunit/phpunit-9.6.11 2023-08-26 05:10:59 +00:00
dependabot[bot]
95ff8e19d2 Chore(deps): Bump @nextcloud/vue from 7.12.2 to 7.12.4
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.12.2 to 7.12.4.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-vue/blob/v7.12.4/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v7.12.2...v7.12.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-26 02:42:00 +00:00
dependabot[bot]
b88931cc10 Chore(deps): Bump @babel/runtime from 7.22.10 to 7.22.11
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.22.10 to 7.22.11.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.22.11/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-26 02:41:30 +00:00
dependabot[bot]
dac4679cea Chore(deps-dev): Bump @relative-ci/agent from 4.1.6 to 4.1.8
Bumps [@relative-ci/agent](https://github.com/relative-ci/agent) from 4.1.6 to 4.1.8.
- [Release notes](https://github.com/relative-ci/agent/releases)
- [Commits](https://github.com/relative-ci/agent/compare/v4.1.6...v4.1.8)

---
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>
2023-08-26 02:40:44 +00:00
dependabot[bot]
a222a826e7 Chore(deps-dev): Bump psalm/phar from 5.14.1 to 5.15.0
Bumps [psalm/phar](https://github.com/psalm/phar) from 5.14.1 to 5.15.0.
- [Release notes](https://github.com/psalm/phar/releases)
- [Commits](https://github.com/psalm/phar/compare/5.14.1...5.15.0)

---
updated-dependencies:
- dependency-name: psalm/phar
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-26 02:38:52 +00:00
dependabot[bot]
90fad55424 Chore(deps-dev): Bump phpunit/phpunit from 9.6.10 to 9.6.11
Bumps [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit) from 9.6.10 to 9.6.11.
- [Changelog](https://github.com/sebastianbergmann/phpunit/blob/9.6.11/ChangeLog-9.6.md)
- [Commits](https://github.com/sebastianbergmann/phpunit/compare/9.6.10...9.6.11)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-26 02:38:49 +00:00
dependabot[bot]
77a9c8ba8d Chore(deps): Bump cypress-io/github-action from 5 to 6
Bumps [cypress-io/github-action](https://github.com/cypress-io/github-action) from 5 to 6.
- [Release notes](https://github.com/cypress-io/github-action/releases)
- [Changelog](https://github.com/cypress-io/github-action/blob/master/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/github-action/compare/v5...v6)

---
updated-dependencies:
- dependency-name: cypress-io/github-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-26 01:14:33 +00:00
Nextcloud bot
a5e8b26cea Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-26 00:48:40 +00:00
Nextcloud bot
889b98fbe3 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-25 00:52:04 +00:00
Luka Trovic
d589559c7d feat: update smart picker links
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2023-08-24 20:04:46 +02:00
Julius Härtl
2bf339fb03 Merge pull request #5046 from nextcloud/feature/preselect-board-list-for-new-card-dialog 2023-08-24 15:47:30 +02:00
Luka Trovic
e03e57e5ac feat: remember last board, list for new card dialog
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2023-08-24 15:39:48 +02:00
Nextcloud bot
56a00258d4 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-24 01:17:40 +00:00
Nextcloud bot
788b785b3c Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-23 00:44:33 +00:00
Julius Härtl
89cc8e2024 Merge pull request #4362 from faab007nl/patch-1 2023-08-22 08:45:26 +02:00
Julius Härtl
0d658e0959 Merge pull request #4748 from nextcloud/Jerome-Herbinet-deck-card-comment-notif-label-improv 2023-08-22 08:45:09 +02:00
Fabian Dingemans
f9cf7223e4 Enabled advanced fields option on tag color picker
I have enabled the advanced fields option on the color picker for the board tag editor

Signed-off-by: Fabian Dingemans <mail@fabiandingemans.nl>
2023-08-22 08:23:13 +02:00
Julius Härtl
8e4c783c97 feat: Group deck activity settings
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-22 08:22:35 +02:00
Jérôme Herbinet
af1e413513 Deck card comment notification label improvement
Signed-off-by: Jérôme Herbinet <33763786+Jerome-Herbinet@users.noreply.github.com>
2023-08-22 07:55:26 +02:00
Julius Härtl
b9316cdd2b Merge pull request #4850 from nextcloud/remDupBtn 2023-08-22 07:54:20 +02:00
Julius Härtl
b4e6d69695 Merge pull request #5039 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/browserslist-config-3.0.0 2023-08-21 09:16:33 +02:00
Julius Härtl
bc2873da84 Merge pull request #5037 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/webpack-vue-config-6.0.0 2023-08-21 08:49:35 +02:00
Julius Härtl
3a0aa3c599 Merge pull request #5041 from nextcloud/automated/noid/main-update-nextcloud-ocp 2023-08-20 11:38:47 +02:00
nextcloud-command
2466b00738 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-08-20 02:24:30 +00:00
dependabot[bot]
8ed14499c4 Merge pull request #5038 from nextcloud/dependabot/npm_and_yarn/main/cypress-12.17.4 2023-08-19 03:04:34 +00:00
dependabot[bot]
5b93bfa24d Chore(deps-dev): Bump @nextcloud/browserslist-config from 2.3.0 to 3.0.0
Bumps [@nextcloud/browserslist-config](https://github.com/nextcloud/browserslist-config) from 2.3.0 to 3.0.0.
- [Release notes](https://github.com/nextcloud/browserslist-config/releases)
- [Commits](https://github.com/nextcloud/browserslist-config/compare/v2.3.0...v3.0.0)

---
updated-dependencies:
- dependency-name: "@nextcloud/browserslist-config"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-19 01:20:20 +00:00
dependabot[bot]
20f1219c27 Chore(deps-dev): Bump cypress from 12.17.3 to 12.17.4
Bumps [cypress](https://github.com/cypress-io/cypress) from 12.17.3 to 12.17.4.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.17.3...v12.17.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-19 01:20:01 +00:00
dependabot[bot]
ccbad7198c Chore(deps-dev): Bump @nextcloud/webpack-vue-config from 5.5.1 to 6.0.0
Bumps [@nextcloud/webpack-vue-config](https://github.com/nextcloud-libraries/webpack-vue-config) from 5.5.1 to 6.0.0.
- [Release notes](https://github.com/nextcloud-libraries/webpack-vue-config/releases)
- [Changelog](https://github.com/nextcloud-libraries/webpack-vue-config/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/webpack-vue-config/compare/v5.5.1...v6.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-19 01:19:34 +00:00
Nextcloud bot
e10c578d96 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-18 00:51:54 +00:00
Julius Härtl
72c3d8a3c9 Merge pull request #5029 from nextcloud/feature/update-card-create-dialog 2023-08-16 21:03:42 +02:00
Nextcloud bot
f333cb3865 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-16 00:41:37 +00:00
Luka Trovic
3428b1793b feat: error msg on CreateNewCardCustomPicker & only show available boards
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2023-08-15 20:32:28 +02:00
Nextcloud bot
3337d007af Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-15 01:15:59 +00:00
Julius Härtl
87cc013c2a Merge pull request #5025 from nextcloud/feature/add-tests-create-new-deck-card 2023-08-14 09:44:19 +02:00
Luka Trovic
369de2d8be test: add cypress tests for create new deck card
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2023-08-14 09:19:10 +02:00
Julius Härtl
cfeda558f6 Merge pull request #5023 from nextcloud/automated/noid/main-update-nextcloud-ocp 2023-08-14 07:08:37 +02:00
Nextcloud bot
3f74854f49 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-14 00:41:47 +00:00
nextcloud-command
6b7abfc3d9 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-08-13 02:24:27 +00:00
Julius Härtl
d232979d7b ci(cypress): Catch resize observer loop limit (2)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-12 09:27:08 +02:00
Julius Härtl
f1e7a4b184 ci(cypress): Catch resize observer loop limit
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-12 09:14:31 +02:00
Julius Härtl
be86a2e96c fix: use proper owner source
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-12 09:10:59 +02:00
dependabot[bot]
a5f7160b52 Merge pull request #5007 from nextcloud/dependabot/npm_and_yarn/main/eslint-plugin-cypress-2.14.0 2023-08-12 05:29:50 +00:00
dependabot[bot]
6191d62ade Chore(deps-dev): Bump eslint-plugin-cypress from 2.13.3 to 2.14.0
Bumps [eslint-plugin-cypress](https://github.com/cypress-io/eslint-plugin-cypress) from 2.13.3 to 2.14.0.
- [Release notes](https://github.com/cypress-io/eslint-plugin-cypress/releases)
- [Commits](https://github.com/cypress-io/eslint-plugin-cypress/compare/v2.13.3...v2.14.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-12 04:19:10 +00:00
dependabot[bot]
f2ccbf3fae Merge pull request #5009 from nextcloud/dependabot/npm_and_yarn/main/vue/vue2-jest-29.2.5 2023-08-12 04:18:29 +00:00
dependabot[bot]
d8894e1ab4 Merge pull request #5008 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/vue-7.12.2 2023-08-12 04:11:26 +00:00
dependabot[bot]
9ec077884b Merge pull request #5006 from nextcloud/dependabot/npm_and_yarn/main/babel/runtime-7.22.10 2023-08-12 04:08:53 +00:00
dependabot[bot]
b20be99732 Chore(deps-dev): Bump @vue/vue2-jest from 29.2.4 to 29.2.5
Bumps [@vue/vue2-jest](https://github.com/vuejs/vue-jest) from 29.2.4 to 29.2.5.
- [Release notes](https://github.com/vuejs/vue-jest/releases)
- [Commits](https://github.com/vuejs/vue-jest/compare/v29.2.4...v29.2.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-12 01:31:00 +00:00
dependabot[bot]
82f427bc4f Chore(deps): Bump @nextcloud/vue from 7.12.1 to 7.12.2
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.12.1 to 7.12.2.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-vue/blob/v7.12.2/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v7.12.1...v7.12.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-12 01:30:39 +00:00
dependabot[bot]
b6de652dd0 Chore(deps): Bump @babel/runtime from 7.22.6 to 7.22.10
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.22.6 to 7.22.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.22.10/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-12 01:29:53 +00:00
Nextcloud bot
10c5783170 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-12 00:43:15 +00:00
Julius Härtl
86111b3939 Merge pull request #5005 from nextcloud/test/version-ignore 2023-08-11 20:00:30 +02:00
Julius Härtl
d01df8c1a3 tests: ignore version of stored json for import tests
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 19:47:27 +02:00
Julius Härtl
390adc92af Merge pull request #4939 from nextcloud/enh/import-from-deck 2023-08-11 19:04:16 +02:00
Julius Härtl
20f0e8efa1 fix: Only map owner for user mapping
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 18:47:38 +02:00
Julius Härtl
66728431b8 chore: Cleanup some outdated fixme comments
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 18:23:56 +02:00
Julius Härtl
caebc01a9f fix: Map card assignments through mapping config
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 18:21:10 +02:00
Julius Härtl
8e720f1147 fix: Add output for individual failures or skipped parts
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 18:21:09 +02:00
Julius Härtl
86302937a9 tests: assert json diff between import/export
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 18:21:09 +02:00
Julius Härtl
15118f4154 fix: Do not fail on missing owner details
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 18:21:09 +02:00
Julius Härtl
d3ade90129 fix: Only set last modified if not already set manually
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 18:21:09 +02:00
Julius Härtl
54176e2723 fix: Avoid duplicate data on board export
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 18:21:09 +02:00
Julius Härtl
282c1e7d41 test: Add reimport test case
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 18:21:09 +02:00
Julius Härtl
39320a9bac fix: request full details for board export
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 18:21:09 +02:00
Julius Härtl
9d6c83030b draft: todos
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 18:21:09 +02:00
Julius Härtl
e7d5fbff63 feat: Let occ deck:import default to deck json importer
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 18:21:09 +02:00
Julius Härtl
cccc4f2f67 docs: Add dedicated documentation section for import/export
Signed-off-by: Julius Härtl <jus@bitgrid.net>

docs: Update import docs

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 18:21:06 +02:00
Julius Härtl
648200e8d7 test: Add example test data for deck import
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 14:44:57 +02:00
Julius Härtl
1147d3ab53 test: Add some basic integration test skeleton for import
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 14:44:57 +02:00
Julius Härtl
894c415bfd feat: Add app version to the deck app export
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 14:44:57 +02:00
Julius Härtl
56e16b2d3f feat: Implement logic to import multiple boards
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 14:44:57 +02:00
Max
507510f60b WIP: enh(import): import deck json exports
Signed-off-by: Max <max@nextcloud.com>
2023-08-11 14:44:57 +02:00
Julius Härtl
724a12c71f fix: Avoid failing due to uninitialized acces of systemInstance
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 14:44:57 +02:00
Julius Härtl
b57827023b fix: Properly export cards as a child element of the related stack
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 14:44:55 +02:00
Nextcloud bot
863e729e60 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-11 00:45:38 +00:00
Julius Härtl
e6c1279327 Merge pull request #4998 from nextcloud/bugfix/noid/trello-token 2023-08-10 12:41:11 +02:00
Nextcloud bot
bcdc621238 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-10 00:43:05 +00:00
Julius Härtl
96081a5d7a Merge pull request #4969 from nextcloud/feature/create-new-card-from-smart-picker 2023-08-09 14:02:10 +02:00
Julius Härtl
3b09608328 chore: Add LoadEditor event to psalm stubs
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-09 13:53:34 +02:00
Julius Härtl
5db743cef0 fix: Add missing scss file
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-09 13:33:52 +02:00
Julius Härtl
16063af045 fix: Load editor on reference pickers for card create dialog
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-09 13:25:28 +02:00
Julius Härtl
5910d8a964 fix: Also detect reference to simple card urls
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-09 13:25:27 +02:00
Luka Trovic
12217afe65 feat: create new card from smart picker
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2023-08-09 13:25:27 +02:00
Nextcloud bot
ba56687982 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-09 01:06:03 +00:00
Julius Härtl
63b0c8271b fix: Adapt regex for trello token to new length and format
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-08 10:21:40 +02:00
Julius Härtl
1f53ce1d74 Merge pull request #4997 from nextcloud/bugfix/noid/share-event 2023-08-08 10:20:18 +02:00
Nextcloud bot
c9181d16f0 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-08 00:46:17 +00:00
Julius Härtl
0d1decf746 chore(deps): Update nextcloud/ocp
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-07 19:29:22 +02:00
Julius Härtl
2ccfb9beee fix: Use typed share event
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-07 19:28:58 +02:00
Julius Härtl
1d781323f6 Merge pull request #4981 from nextcloud/dependabot/composer/psalm/phar-5.14.1 2023-08-06 22:10:36 +02:00
Julius Härtl
a4d024b7bf Merge pull request #4972 from nextcloud/dependabot/github_actions/shivammathur/setup-php-2.25.5 2023-08-06 22:10:14 +02:00
Julius Härtl
03f0acba0c Merge pull request #4993 from nextcloud/automated/noid/main-fix-npm-audit 2023-08-06 11:55:04 +02:00
nextcloud-command
e96c3df0db chore(deps): fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2023-08-06 03:28:33 +00:00
Nextcloud bot
62c1b88a24 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-06 00:41:18 +00:00
dependabot[bot]
1e729f8fa0 Merge pull request #4974 from nextcloud/dependabot/npm_and_yarn/main/cypress-12.17.3 2023-08-05 05:44:52 +00:00
dependabot[bot]
cf0f096e77 Chore(deps-dev): Bump cypress from 12.17.2 to 12.17.3
Bumps [cypress](https://github.com/cypress-io/cypress) from 12.17.2 to 12.17.3.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.17.2...v12.17.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-05 03:57:10 +00:00
dependabot[bot]
d059d7bb4a Merge pull request #4975 from nextcloud/dependabot/npm_and_yarn/main/jest-29.6.2 2023-08-05 03:56:14 +00:00
dependabot[bot]
d86855a2f7 Chore(deps-dev): Bump jest from 29.6.1 to 29.6.2
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 29.6.1 to 29.6.2.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v29.6.2/packages/jest)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-05 02:16:32 +00:00
dependabot[bot]
12e8966d47 Merge pull request #4976 from nextcloud/dependabot/npm_and_yarn/main/relative-ci/agent-4.1.6 2023-08-05 02:15:31 +00:00
dependabot[bot]
0569f2b520 Chore(deps-dev): Bump psalm/phar from 5.13.1 to 5.14.1
Bumps [psalm/phar](https://github.com/psalm/phar) from 5.13.1 to 5.14.1.
- [Release notes](https://github.com/psalm/phar/releases)
- [Commits](https://github.com/psalm/phar/compare/5.13.1...5.14.1)

---
updated-dependencies:
- dependency-name: psalm/phar
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-05 02:13:17 +00:00
dependabot[bot]
3d75cbc58a Merge pull request #4971 from nextcloud/dependabot/github_actions/svenstaro/upload-release-action-2.7.0 2023-08-05 01:15:57 +00:00
dependabot[bot]
dcf57c0b51 Chore(deps-dev): Bump @relative-ci/agent from 4.1.5 to 4.1.6
Bumps [@relative-ci/agent](https://github.com/relative-ci/agent) from 4.1.5 to 4.1.6.
- [Release notes](https://github.com/relative-ci/agent/releases)
- [Commits](https://github.com/relative-ci/agent/compare/v4.1.5...v4.1.6)

---
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>
2023-08-05 01:13:51 +00:00
dependabot[bot]
a44612d970 Chore(deps): Bump shivammathur/setup-php from 2.25.4 to 2.25.5
Bumps [shivammathur/setup-php](https://github.com/shivammathur/setup-php) from 2.25.4 to 2.25.5.
- [Release notes](https://github.com/shivammathur/setup-php/releases)
- [Commits](https://github.com/shivammathur/setup-php/compare/2.25.4...2.25.5)

---
updated-dependencies:
- dependency-name: shivammathur/setup-php
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-05 01:06:18 +00:00
dependabot[bot]
c0b69a2291 Chore(deps): Bump svenstaro/upload-release-action from 2.6.1 to 2.7.0
Bumps [svenstaro/upload-release-action](https://github.com/svenstaro/upload-release-action) from 2.6.1 to 2.7.0.
- [Release notes](https://github.com/svenstaro/upload-release-action/releases)
- [Changelog](https://github.com/svenstaro/upload-release-action/blob/master/CHANGELOG.md)
- [Commits](2b9d2847a9...1beeb572c1)

---
updated-dependencies:
- dependency-name: svenstaro/upload-release-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-05 01:06:15 +00:00
Nextcloud bot
45eba0b047 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-04 00:46:27 +00:00
Nextcloud bot
34cd8b664f Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-02 01:09:02 +00:00
Julius Härtl
a66943d9a5 Merge pull request #4965 from nextcloud/automated/noid/main-update-nextcloud-ocp 2023-07-31 11:52:32 +02:00
nextcloud-command
aa3a2fdce2 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-07-30 02:38:06 +00:00
Nextcloud bot
a555b78c78 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-30 00:41:10 +00:00
Julius Härtl
bfbf7c94a6 Merge pull request #4960 from nextcloud/automated/noid/main-fix-npm-audit 2023-07-23 20:45:40 +02:00
Julius Härtl
dc49e0f21d Merge pull request #4955 from nextcloud/automated/noid/main-update-nextcloud-ocp 2023-07-23 19:46:42 +02:00
nextcloud-command
69a13a7b23 chore(deps): fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2023-07-23 03:20:23 +00:00
nextcloud-command
77e818e6f1 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-07-23 02:49:48 +00:00
dependabot[bot]
6785968df9 Merge pull request #4954 from nextcloud/dependabot/npm_and_yarn/main/cypress-12.17.2 2023-07-22 02:10:32 +00:00
dependabot[bot]
00dfd3b55b Chore(deps-dev): Bump cypress from 12.17.1 to 12.17.2
Bumps [cypress](https://github.com/cypress-io/cypress) from 12.17.1 to 12.17.2.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.17.1...v12.17.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-22 01:52:34 +00:00
dependabot[bot]
e316a4784e Merge pull request #4920 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/stylelint-config-2.3.1 2023-07-21 16:48:26 +00:00
dependabot[bot]
a0fef6bc56 Chore(deps-dev): Bump @nextcloud/stylelint-config from 2.3.0 to 2.3.1
Bumps [@nextcloud/stylelint-config](https://github.com/nextcloud/stylelint-config) from 2.3.0 to 2.3.1.
- [Release notes](https://github.com/nextcloud/stylelint-config/releases)
- [Changelog](https://github.com/nextcloud/stylelint-config/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/stylelint-config/compare/v2.3.0...v2.3.1)

---
updated-dependencies:
- dependency-name: "@nextcloud/stylelint-config"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-21 18:34:53 +02:00
Julius Härtl
a84715808e Merge pull request #4906 from nextcloud/bugfix/noid/board-split-query 2023-07-21 18:08:19 +02:00
Julius Härtl
fe319c86ab fix: Split query to fetch board ids to avoid slow query join
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-07-21 15:11:27 +02:00
Arthur Schiwon
554efab34b Merge pull request #4903 from nextcloud/feat/display-name-cache
feat: Use user display name cache
2023-07-20 12:30:12 +02:00
Arthur Schiwon
631b32d43d Merge pull request #4947 from nextcloud/chore/composer
chore(composer): Update and cleanup composer dependencies
2023-07-20 12:19:11 +02:00
Julius Härtl
2a4076c5ba chore(composer): Update and cleanup composer dependencies
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-07-20 11:42:19 +02:00
Nextcloud bot
d19a335c6a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-19 00:41:17 +00:00
Nextcloud bot
46d5be10c1 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-18 00:38:51 +00:00
Nextcloud bot
84e1bd5fbe Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-16 00:39:18 +00:00
dependabot[bot]
f55d851bff Merge pull request #4922 from nextcloud/dependabot/npm_and_yarn/main/dompurify-3.0.5 2023-07-15 06:14:53 +00:00
dependabot[bot]
40c13a7fa5 Merge pull request #4923 from nextcloud/dependabot/npm_and_yarn/main/cypress-12.17.1 2023-07-15 04:02:45 +00:00
dependabot[bot]
573d884acf Merge pull request #4921 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/initial-state-2.1.0 2023-07-15 03:55:33 +00:00
dependabot[bot]
7b29f11e1d Chore(deps): Bump dompurify from 3.0.4 to 3.0.5
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.0.4 to 3.0.5.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.0.4...3.0.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-15 03:53:53 +00:00
dependabot[bot]
a37c1e173b Merge pull request #4919 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/vue-7.12.1 2023-07-15 03:53:09 +00:00
dependabot[bot]
80c45b4dd8 Chore(deps-dev): Bump cypress from 12.17.0 to 12.17.1
Bumps [cypress](https://github.com/cypress-io/cypress) from 12.17.0 to 12.17.1.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.17.0...v12.17.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-15 01:28:01 +00:00
dependabot[bot]
72a48d956d Chore(deps): Bump @nextcloud/initial-state from 2.0.0 to 2.1.0
Bumps [@nextcloud/initial-state](https://github.com/nextcloud/nextcloud-initial-state) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/nextcloud/nextcloud-initial-state/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-initial-state/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-initial-state/compare/v2.0.0...v2.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-15 01:27:03 +00:00
dependabot[bot]
e272ddaf96 Chore(deps): Bump @nextcloud/vue from 7.12.0 to 7.12.1
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.12.0 to 7.12.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.12.0...v7.12.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>
2023-07-15 01:26:04 +00:00
dependabot[bot]
b80c3bf30f Merge pull request #4913 from nextcloud/dependabot/composer/phpunit/phpunit-9.6.10 2023-07-15 01:13:41 +00:00
dependabot[bot]
1b5cc98249 Chore(deps-dev): Bump phpunit/phpunit from 9.6.9 to 9.6.10
Bumps [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit) from 9.6.9 to 9.6.10.
- [Changelog](https://github.com/sebastianbergmann/phpunit/blob/9.6.10/ChangeLog-9.6.md)
- [Commits](https://github.com/sebastianbergmann/phpunit/compare/9.6.9...9.6.10)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-15 01:01:55 +00:00
Julius Härtl
c4a826b073 Merge pull request #4718 from fsamapoor/constructor_property_promotion_in_controllers 2023-07-14 14:24:00 +02:00
Faraz Samapoor
559579fbd9 Refactors controllers by using PHP8's constructor property promotion.
Co-authored-by: Julius Härtl <jus@bitgrid.net>
Signed-off-by: Faraz Samapoor <f.samapoor@gmail.com>
Signed-off-by: Faraz Samapoor <fsa@adlas.at>
2023-07-14 15:42:44 +03:30
Julius Härtl
90d051f8e4 Merge pull request #4908 from nextcloud/bugfix/noid/prevent-null-in-notification-parameter 2023-07-14 08:25:13 +02:00
Joas Schilling
4b1e670b4e fix(notification): Prevent null in parameters
Signed-off-by: Joas Schilling <coding@schilljs.com>
2023-07-14 07:53:51 +02:00
Nextcloud bot
85e09acfc3 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-14 00:44:25 +00:00
Julius Härtl
1a89685d53 Merge pull request #4907 from nextcloud/ci/perf-garm 2023-07-13 18:08:20 +02:00
Julius Härtl
698ee422ff ci: Make paths of query count compatible with garm
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-07-13 17:51:20 +02:00
Julius Härtl
2b19c3353a ci(integration): Make query.log paths relative so they work on GitHub and Garm
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-07-13 11:52:03 +02:00
Julius Härtl
6e99ec8fc5 Delete nightly.yml
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-07-13 11:47:48 +02:00
Nextcloud bot
281eb6d2ff Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-13 00:44:42 +00:00
Nextcloud bot
f4daedd84f Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-12 00:36:28 +00:00
Julius Härtl
4a9e399cc9 feat: Use user display name cache
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-07-11 15:33:45 +02:00
Nextcloud bot
683ae36b8b Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-11 00:47:38 +00:00
Julius Härtl
74b0d2f690 Merge pull request #4877 from nextcloud/actions/pr-feedback 2023-07-10 17:47:18 +02:00
Julius Härtl
dfd8656339 Merge pull request #4871 from nextcloud/automated/noid/main-fix-npm-audit 2023-07-10 12:31:53 +02:00
Nextcloud bot
7ae66082c4 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-10 00:44:03 +00:00
nextcloud-command
f2ba642207 chore(deps): fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2023-07-09 03:52:21 +00:00
dependabot[bot]
dd23dd6bf3 Merge pull request #4893 from nextcloud/dependabot/npm_and_yarn/main/babel/runtime-7.22.6 2023-07-08 04:11:50 +00:00
dependabot[bot]
8d324c0669 Merge pull request #4892 from nextcloud/dependabot/npm_and_yarn/main/cypress-12.17.0 2023-07-08 04:11:40 +00:00
dependabot[bot]
e6363439b6 Merge pull request #4894 from nextcloud/dependabot/npm_and_yarn/main/url-search-params-polyfill-8.2.4 2023-07-08 03:31:01 +00:00
dependabot[bot]
bf66da8313 Chore(deps): Bump @babel/runtime from 7.22.5 to 7.22.6
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.22.5 to 7.22.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.22.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>
2023-07-08 03:29:39 +00:00
dependabot[bot]
4a4fcca61f Chore(deps-dev): Bump cypress from 12.16.0 to 12.17.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 12.16.0 to 12.17.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.16.0...v12.17.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-08 03:29:25 +00:00
dependabot[bot]
85a99dd15b Merge pull request #4891 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/axios-2.4.0 2023-07-08 03:28:45 +00:00
dependabot[bot]
e21c3da80b Merge pull request #4890 from nextcloud/dependabot/npm_and_yarn/main/jest-29.6.1 2023-07-08 03:28:05 +00:00
dependabot[bot]
7379fbad1b Chore(deps): Bump url-search-params-polyfill from 8.2.3 to 8.2.4
Bumps [url-search-params-polyfill](https://github.com/jerrybendy/url-search-params-polyfill) from 8.2.3 to 8.2.4.
- [Release notes](https://github.com/jerrybendy/url-search-params-polyfill/releases)
- [Commits](https://github.com/jerrybendy/url-search-params-polyfill/commits/v8.2.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-08 01:42:19 +00:00
dependabot[bot]
fc721646c1 Chore(deps): Bump @nextcloud/axios from 2.3.0 to 2.4.0
Bumps [@nextcloud/axios](https://github.com/nextcloud/nextcloud-axios) from 2.3.0 to 2.4.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.3.0...v2.4.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>
2023-07-08 01:40:59 +00:00
dependabot[bot]
05823b9119 Chore(deps-dev): Bump jest from 29.5.0 to 29.6.1
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 29.5.0 to 29.6.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v29.6.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>
2023-07-08 01:40:40 +00:00
Nextcloud bot
ad770a370a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-08 00:45:00 +00:00
Nextcloud bot
bdb97c56df Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-07 00:42:25 +00:00
Nextcloud bot
ff3592134c Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-06 00:45:26 +00:00
max-nextcloud
fdb8f710ca Create pr-feedback.yml
Signed-off-by: max-nextcloud <max@nextcloud.com>
2023-07-04 18:33:30 +02:00
dependabot[bot]
425f76de55 Merge pull request #4870 from nextcloud/dependabot/npm_and_yarn/main/dompurify-3.0.4 2023-07-01 05:01:22 +00:00
dependabot[bot]
ec312abd7a Merge pull request #4867 from nextcloud/dependabot/npm_and_yarn/main/cypress-12.16.0 2023-07-01 03:30:52 +00:00
dependabot[bot]
580ed4c843 bump dompurify from 3.0.3 to 3.0.4
---
updated-dependencies:
- dependency-name: dompurify
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-01 03:18:06 +00:00
dependabot[bot]
801076e2ae Merge pull request #4866 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/l10n-2.2.0 2023-07-01 03:17:07 +00:00
dependabot[bot]
c0c8e4b5fa Merge pull request #4865 from nextcloud/dependabot/composer/vimeo/psalm-5.13.1 2023-07-01 02:21:33 +00:00
dependabot[bot]
843c31097b Chore(deps-dev): Bump cypress from 12.15.0 to 12.16.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 12.15.0 to 12.16.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.15.0...v12.16.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-01 02:05:02 +00:00
dependabot[bot]
d85a2e3844 Chore(deps): Bump @nextcloud/l10n from 2.1.0 to 2.2.0
Bumps [@nextcloud/l10n](https://github.com/nextcloud/nextcloud-l10n) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/nextcloud/nextcloud-l10n/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-l10n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-l10n/compare/v2.1.0...v2.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-01 01:39:30 +00:00
dependabot[bot]
bb045e0cee Chore(deps-dev): Bump vimeo/psalm from 5.12.0 to 5.13.1
Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 5.12.0 to 5.13.1.
- [Release notes](https://github.com/vimeo/psalm/releases)
- [Commits](https://github.com/vimeo/psalm/compare/5.12.0...5.13.1)

---
updated-dependencies:
- dependency-name: vimeo/psalm
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-01 01:16:08 +00:00
Nextcloud bot
ab016b4561 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-30 00:44:04 +00:00
Nextcloud bot
df2ab676cd Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-28 00:46:01 +00:00
Nextcloud bot
deaed6324d Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-27 00:47:11 +00:00
Nextcloud bot
7e59907485 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-26 00:42:51 +00:00
Julius Härtl
bfaa63363d Merge pull request #4852 from nextcloud/automated/noid/main-fix-npm-audit 2023-06-25 12:31:59 +02:00
nextcloud-command
a99993f54c chore(deps): fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2023-06-25 03:59:14 +00:00
Git'Fellow
117e2a4ca6 Remove duplicate button
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2023-06-24 08:45:57 +02:00
dependabot[bot]
aeb2716831 Merge pull request #4846 from nextcloud/dependabot/npm_and_yarn/main/cypress-12.15.0 2023-06-24 03:54:50 +00:00
dependabot[bot]
064041f4fb Merge pull request #4841 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/dialogs-4.1.0 2023-06-24 03:48:51 +00:00
dependabot[bot]
f9ba318f9e Merge pull request #4845 from nextcloud/dependabot/npm_and_yarn/fast-xml-parser-4.2.5 2023-06-24 03:43:48 +00:00
dependabot[bot]
a3326c9e10 Chore(deps-dev): Bump cypress from 12.14.0 to 12.15.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 12.14.0 to 12.15.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.14.0...v12.15.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-24 03:43:02 +00:00
dependabot[bot]
d0ab17ab67 Chore(deps): Bump @nextcloud/dialogs from 4.0.1 to 4.1.0
Bumps [@nextcloud/dialogs](https://github.com/nextcloud/nextcloud-dialogs) from 4.0.1 to 4.1.0.
- [Release notes](https://github.com/nextcloud/nextcloud-dialogs/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-dialogs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-dialogs/compare/v4.0.1...v4.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-24 03:33:13 +00:00
dependabot[bot]
dc2153d813 Chore(deps): Bump fast-xml-parser from 4.2.4 to 4.2.5
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 4.2.4 to 4.2.5.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v4.2.4...v4.2.5)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-24 03:32:55 +00:00
dependabot[bot]
26fd2c5945 Merge pull request #4843 from nextcloud/dependabot/npm_and_yarn/main/relative-ci/agent-4.1.5 2023-06-24 03:32:18 +00:00
dependabot[bot]
ce199d66a8 Chore(deps-dev): Bump @relative-ci/agent from 4.1.4 to 4.1.5
Bumps [@relative-ci/agent](https://github.com/relative-ci/agent) from 4.1.4 to 4.1.5.
- [Release notes](https://github.com/relative-ci/agent/releases)
- [Commits](https://github.com/relative-ci/agent/compare/v4.1.4...v4.1.5)

---
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>
2023-06-24 03:20:41 +00:00
Nextcloud bot
54258aca68 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-24 00:40:41 +00:00
Nextcloud bot
3cb4cd6f21 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-23 01:12:41 +00:00
Julius Härtl
58cc4b5ccb Merge pull request #4836 from nextcloud/automated/update-engines/default 2023-06-21 17:45:13 +02:00
John Molakvoæ
e3c275a7cb chore: update node engines to next LTS (node 20 / npm 9)
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2023-06-21 10:12:12 +02:00
Julius Härtl
36350fa292 Merge pull request #4816 from nextcloud/fix/occ-import-crash 2023-06-20 10:48:28 +02:00
Julius Härtl
82e356ad01 Merge pull request #4826 from nextcloud/dependabot/github_actions/shivammathur/setup-php-2.25.4 2023-06-20 10:47:19 +02:00
Julius Härtl
f23deebd25 Merge pull request #4817 from nextcloud/bugfix/open-card-in-modal 2023-06-20 10:46:46 +02:00
Julius Härtl
6a103b5a76 Merge pull request #4828 from pbek/main 2023-06-20 10:42:33 +02:00
Nextcloud bot
110e1e42e7 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-20 00:38:09 +00:00
Patrizio Bekerle
fa08842aa4 doc: mention QOwnNotes integration 2023-06-17 13:41:01 +02:00
dependabot[bot]
66e679bd11 Merge pull request #4825 from nextcloud/dependabot/github_actions/peter-evans/create-pull-request-5.0.2 2023-06-17 04:50:07 +00:00
dependabot[bot]
bc379bade8 Merge pull request #4823 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/router-2.1.2 2023-06-17 04:15:33 +00:00
dependabot[bot]
db8d83c1c4 Chore(deps): Bump shivammathur/setup-php from 2.25.2 to 2.25.4
Bumps [shivammathur/setup-php](https://github.com/shivammathur/setup-php) from 2.25.2 to 2.25.4.
- [Release notes](https://github.com/shivammathur/setup-php/releases)
- [Commits](https://github.com/shivammathur/setup-php/compare/2.25.2...2.25.4)

---
updated-dependencies:
- dependency-name: shivammathur/setup-php
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-17 03:45:45 +00:00
dependabot[bot]
6a8f3b626b Chore(deps): Bump peter-evans/create-pull-request from 5.0.1 to 5.0.2
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 5.0.1 to 5.0.2.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](284f54f989...153407881e)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-17 03:45:31 +00:00
dependabot[bot]
54f7cf78e9 Merge pull request #4820 from nextcloud/dependabot/composer/phpunit/phpunit-9.6.9 2023-06-17 03:14:14 +00:00
dependabot[bot]
2581584b6b Chore(deps): Bump @nextcloud/router from 2.1.1 to 2.1.2
Bumps [@nextcloud/router](https://github.com/nextcloud/nextcloud-router) from 2.1.1 to 2.1.2.
- [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/compare/v2.1.1...v2.1.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-17 02:58:18 +00:00
dependabot[bot]
72ac69b075 Chore(deps-dev): Bump phpunit/phpunit from 9.6.8 to 9.6.9
Bumps [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit) from 9.6.8 to 9.6.9.
- [Changelog](https://github.com/sebastianbergmann/phpunit/blob/9.6.9/ChangeLog-9.6.md)
- [Commits](https://github.com/sebastianbergmann/phpunit/compare/9.6.8...9.6.9)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-17 01:56:30 +00:00
Nextcloud bot
d1a3720f50 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-17 00:32:02 +00:00
Luka Trovic
710d648af7 fix: cypress issue
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2023-06-16 19:09:29 +02:00
Luka Trovic
e2d463e7d8 fix: open card in modal on main route
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2023-06-16 19:09:29 +02:00
Nextcloud bot
91b1f6e9aa Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-16 00:31:59 +00:00
Max
cfa9c4d1c4 fix: crash when leaving out system parameter
The `--system` parameter can be supplied via command line
or selected afterwards.

However if none was provided the command would crash with
`TypeError: Cannot assign null to property $system`.

Handle that gracefully and make the type spec more precise
for the setSystem function.

Signed-off-by: Max <max@nextcloud.com>
2023-06-15 12:53:14 +02:00
Nextcloud bot
4ddbf472c3 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-15 00:32:03 +00:00
Julius Härtl
5298a8d26a Merge pull request #4810 from nextcloud/fix/4010-set-userid-for-export-command 2023-06-14 12:30:22 +02:00
Julius Härtl
53f1247939 Merge pull request #4809 from nextcloud/fix/return-int-from-commands 2023-06-14 12:29:17 +02:00
Max
ff16f95b57 fix: execute return int for export command
Signed-off-by: Max <max@nextcloud.com>
2023-06-14 11:17:50 +02:00
Max
0419ebc856 Fix(occ): set user id for permission sevice from board service
Fixes #4010.

Signed-off-by: Max <max@nextcloud.com>
2023-06-14 11:12:58 +02:00
Nextcloud bot
6fa8480722 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-14 00:32:15 +00:00
Nextcloud bot
1da513cecd Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-13 00:32:36 +00:00
Julius Härtl
309ec45a98 Merge pull request #4772 from nextcloud/fix/dynamic-autoloading 2023-06-12 10:14:02 +02:00
Julius Härtl
ddfd695376 fix: Allow dynamic autoloading for classes added during upgrade
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-06-12 09:15:41 +02:00
Nextcloud bot
260e87c983 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-11 00:52:38 +00:00
dependabot[bot]
460b0d8968 Merge pull request #4796 from nextcloud/dependabot/npm_and_yarn/main/cypress-12.14.0 2023-06-10 05:30:24 +00:00
dependabot[bot]
b61daa36a0 Merge pull request #4797 from nextcloud/dependabot/npm_and_yarn/main/url-search-params-polyfill-8.2.3 2023-06-10 05:30:00 +00:00
dependabot[bot]
fcbb4ee45e Merge pull request #4779 from nextcloud/dependabot/npm_and_yarn/main/babel/runtime-7.22.5 2023-06-10 05:16:28 +00:00
dependabot[bot]
536e9350b3 Merge pull request #4791 from nextcloud/dependabot/github_actions/peter-evans/create-or-update-comment-3.0.2 2023-06-10 04:50:27 +00:00
dependabot[bot]
9efabe8638 Merge pull request #4788 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/vue-7.12.0 2023-06-10 04:16:42 +00:00
dependabot[bot]
4f9c8b3640 Chore(deps): Bump url-search-params-polyfill from 8.2.2 to 8.2.3
Bumps [url-search-params-polyfill](https://github.com/jerrybendy/url-search-params-polyfill) from 8.2.2 to 8.2.3.
- [Release notes](https://github.com/jerrybendy/url-search-params-polyfill/releases)
- [Commits](https://github.com/jerrybendy/url-search-params-polyfill/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-10 03:49:30 +00:00
dependabot[bot]
e9a03d79b6 Chore(deps-dev): Bump cypress from 12.13.0 to 12.14.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 12.13.0 to 12.14.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.13.0...v12.14.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-10 03:46:50 +00:00
dependabot[bot]
e920676f92 Merge pull request #4784 from nextcloud/dependabot/npm_and_yarn/main/vue/test-utils-1.3.6 2023-06-10 03:23:01 +00:00
dependabot[bot]
63544eb8f4 Chore(deps): Bump peter-evans/create-or-update-comment
Bumps [peter-evans/create-or-update-comment](https://github.com/peter-evans/create-or-update-comment) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/peter-evans/create-or-update-comment/releases)
- [Commits](ca08ebd5dc...c6c9a1a660)

---
updated-dependencies:
- dependency-name: peter-evans/create-or-update-comment
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-10 03:19:35 +00:00
dependabot[bot]
6b5c2a8821 bump @nextcloud/vue from 7.11.6 to 7.12.0
---
updated-dependencies:
- dependency-name: "@nextcloud/vue"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-10 03:03:14 +00:00
dependabot[bot]
39bcdfe5d9 Chore(deps): Bump @babel/runtime from 7.22.3 to 7.22.5
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.22.3 to 7.22.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.22.5/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-10 01:57:52 +00:00
Julius Härtl
186082caf6 Merge pull request #4765 from nextcloud/boardIdInt 2023-06-09 09:42:55 +02:00
Git'Fellow
b53d6a3fe5 Ensure boardId is an integer
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2023-06-09 09:28:51 +02:00
Julius Härtl
afcccabd22 Merge pull request #4768 from nextcloud/dependabot/npm_and_yarn/fast-xml-parser-and-is-svg-4.2.4 2023-06-06 21:23:46 +02:00
dependabot[bot]
1de3a25157 Chore(deps): Bump fast-xml-parser and is-svg
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) and [is-svg](https://github.com/sindresorhus/is-svg). These dependencies needed to be updated together.

Updates `fast-xml-parser` from 3.21.1 to 4.2.4
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/commits)

Updates `is-svg` from 4.3.2 to 4.4.0
- [Release notes](https://github.com/sindresorhus/is-svg/releases)
- [Commits](https://github.com/sindresorhus/is-svg/compare/v4.3.2...v4.4.0)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-type: indirect
- dependency-name: is-svg
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-06 18:38:16 +00:00
dependabot[bot]
8038e568a3 Merge pull request #4752 from nextcloud/dependabot/composer/nextcloud/coding-standard-1.1.1 2023-06-05 20:33:29 +00:00
Julius Härtl
f2e15a3dce ci: Fix psalm config
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-06-05 22:27:03 +02:00
Julius Härtl
0985f24f57 chore: Fix php-cs-fixer errors
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-06-05 22:26:08 +02:00
Julius Härtl
a7e7daf177 Merge pull request #4761 from nextcloud/dependabot/github_actions/skjnldsv/read-package-engines-version-actions-2.2 2023-06-05 07:45:28 +02:00
dependabot[bot]
adc488b334 Merge pull request #4760 from nextcloud/dependabot/npm_and_yarn/main/babel/runtime-7.22.3 2023-06-03 04:59:36 +00:00
dependabot[bot]
fead689299 Chore(deps): Bump skjnldsv/read-package-engines-version-actions
Bumps [skjnldsv/read-package-engines-version-actions](https://github.com/skjnldsv/read-package-engines-version-actions) from 2.1 to 2.2.
- [Release notes](https://github.com/skjnldsv/read-package-engines-version-actions/releases)
- [Commits](0ce2ed60f6...8205673bab)

---
updated-dependencies:
- dependency-name: skjnldsv/read-package-engines-version-actions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-03 03:23:21 +00:00
dependabot[bot]
c0136ca0d0 Merge pull request #4754 from nextcloud/dependabot/npm_and_yarn/main/url-search-params-polyfill-8.2.2 2023-06-03 02:57:25 +00:00
dependabot[bot]
45f9db3641 Chore(deps): Bump url-search-params-polyfill from 8.1.1 to 8.2.2
Bumps [url-search-params-polyfill](https://github.com/jerrybendy/url-search-params-polyfill) from 8.1.1 to 8.2.2.
- [Release notes](https://github.com/jerrybendy/url-search-params-polyfill/releases)
- [Commits](https://github.com/jerrybendy/url-search-params-polyfill/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-03 01:57:43 +00:00
dependabot[bot]
a281e92f34 Chore(deps-dev): Bump nextcloud/coding-standard from 1.0.0 to 1.1.1
Bumps [nextcloud/coding-standard](https://github.com/nextcloud/coding-standard) from 1.0.0 to 1.1.1.
- [Release notes](https://github.com/nextcloud/coding-standard/releases)
- [Changelog](https://github.com/nextcloud/coding-standard/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/coding-standard/compare/v1.0.0...v1.1.1)

---
updated-dependencies:
- dependency-name: nextcloud/coding-standard
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-03 01:56:22 +00:00
Nextcloud bot
c8458d10ba Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-03 00:31:44 +00:00
John Molakvoæ
78d4d7ef99 Merge pull request #4750 from nextcloud/automated/update-workflows 2023-06-01 18:11:48 +02:00
John Molakvoæ
1c576245ce chore: update workflows from templates
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2023-06-01 16:25:41 +02:00
Julius Härtl
3eede07064 Merge pull request #4746 from nextcloud/automated/update-workflows 2023-05-27 14:07:08 +02:00
dependabot[bot]
0eb7ecc90e Merge pull request #4737 from nextcloud/dependabot/npm_and_yarn/main/babel/runtime-7.22.0 2023-05-27 08:04:11 +00:00
John Molakvoæ
050df0577e chore: update workflows from templates
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2023-05-27 09:45:38 +02:00
dependabot[bot]
8d395186fd Merge pull request #4744 from nextcloud/dependabot/github_actions/svenstaro/upload-release-action-2.6.0 2023-05-27 07:09:01 +00:00
dependabot[bot]
2c23a8e154 Merge pull request #4743 from nextcloud/dependabot/github_actions/shivammathur/setup-php-2.25.2 2023-05-27 07:08:54 +00:00
dependabot[bot]
c60d16ab1c Merge pull request #4742 from nextcloud/dependabot/composer/tests/integration/guzzlehttp/guzzle-7.7.0 2023-05-27 07:01:18 +00:00
dependabot[bot]
6dcbf3c56d Merge pull request #4732 from nextcloud/dependabot/npm_and_yarn/main/cypress-12.13.0 2023-05-27 03:30:41 +00:00
dependabot[bot]
bde86ea0c0 Chore(deps): Bump svenstaro/upload-release-action from 2.5.0 to 2.6.0
Bumps [svenstaro/upload-release-action](https://github.com/svenstaro/upload-release-action) from 2.5.0 to 2.6.0.
- [Release notes](https://github.com/svenstaro/upload-release-action/releases)
- [Changelog](https://github.com/svenstaro/upload-release-action/blob/master/CHANGELOG.md)
- [Commits](7319e4733e...58d5258088)

---
updated-dependencies:
- dependency-name: svenstaro/upload-release-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-27 03:27:40 +00:00
dependabot[bot]
dafcd563c2 Chore(deps): Bump shivammathur/setup-php from 2.25.1 to 2.25.2
Bumps [shivammathur/setup-php](https://github.com/shivammathur/setup-php) from 2.25.1 to 2.25.2.
- [Release notes](https://github.com/shivammathur/setup-php/releases)
- [Commits](https://github.com/shivammathur/setup-php/compare/2.25.1...2.25.2)

---
updated-dependencies:
- dependency-name: shivammathur/setup-php
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-27 03:27:15 +00:00
dependabot[bot]
15f303be12 bump @babel/runtime from 7.21.5 to 7.22.0
---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-27 03:24:19 +00:00
dependabot[bot]
2ffc9aa1bb Merge pull request #4735 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/auth-2.1.0 2023-05-27 03:23:29 +00:00
dependabot[bot]
dc8112e574 Chore(deps-dev): Update guzzlehttp/guzzle requirement
Updates the requirements on [guzzlehttp/guzzle](https://github.com/guzzle/guzzle) to permit the latest version.
- [Release notes](https://github.com/guzzle/guzzle/releases)
- [Changelog](https://github.com/guzzle/guzzle/blob/7.7/CHANGELOG.md)
- [Commits](https://github.com/guzzle/guzzle/compare/7.6.1...7.7.0)

---
updated-dependencies:
- dependency-name: guzzlehttp/guzzle
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-27 03:20:27 +00:00
dependabot[bot]
31d80cf0a5 Merge pull request #4730 from nextcloud/dependabot/composer/vimeo/psalm-5.12.0 2023-05-27 03:12:34 +00:00
dependabot[bot]
c8290725bd Chore(deps): Bump @nextcloud/auth from 2.0.0 to 2.1.0
Bumps [@nextcloud/auth](https://github.com/nextcloud/nextcloud-auth) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/nextcloud/nextcloud-auth/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-auth/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-auth/compare/v2.0.0...v2.1.0)

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-27 01:57:46 +00:00
dependabot[bot]
b5026fc4c7 Chore(deps-dev): Bump vimeo/psalm from 5.11.0 to 5.12.0
Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 5.11.0 to 5.12.0.
- [Release notes](https://github.com/vimeo/psalm/releases)
- [Commits](https://github.com/vimeo/psalm/compare/5.11.0...5.12.0)

---
updated-dependencies:
- dependency-name: vimeo/psalm
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-27 01:56:38 +00:00
Nextcloud bot
acb1cd9576 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-05-27 00:32:20 +00:00
Arthur Schiwon
42f38543fd Merge pull request #4715 from nextcloud/tests/php8.2
tests(phpunit): Run phpunit tests against PHP 8.2
2023-05-23 20:53:56 +02:00
Nextcloud bot
7ecca9727e Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-05-21 00:29:05 +00:00
Julius Härtl
0e8416ccbd tests(phpunit): Run phpunit tests against PHP 8.2
fixes #4690

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-18 14:23:46 +02:00
Nextcloud bot
5bfa61ab70 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-05-18 00:29:42 +00:00
dependabot[bot]
bc8d5b2c39 Merge pull request #4699 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/event-bus-3.1.0 2023-05-17 21:39:37 +00:00
dependabot[bot]
bff7663b55 Merge pull request #4702 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/vue-7.11.6 2023-05-17 21:39:16 +00:00
dependabot[bot]
c34990bdae Merge pull request #4693 from nextcloud/dependabot/composer/tests/integration/guzzlehttp/guzzle-7.6.1 2023-05-17 21:34:52 +00:00
Julius Härtl
63bf418060 Merge pull request #4688 from nextcloud/dev/hmr 2023-05-17 20:13:19 +02:00
dependabot[bot]
26c031c0ee Chore(deps): Bump @nextcloud/vue from 7.11.4 to 7.11.6
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.11.4 to 7.11.6.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-vue/blob/v7.11.6/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v7.11.4...v7.11.6)

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-17 18:11:37 +00:00
dependabot[bot]
01ba03eb0e Chore(deps-dev): Update guzzlehttp/guzzle requirement
Updates the requirements on [guzzlehttp/guzzle](https://github.com/guzzle/guzzle) to permit the latest version.
- [Release notes](https://github.com/guzzle/guzzle/releases)
- [Changelog](https://github.com/guzzle/guzzle/blob/7.6/CHANGELOG.md)
- [Commits](https://github.com/guzzle/guzzle/compare/7.5.1...7.6.1)

---
updated-dependencies:
- dependency-name: guzzlehttp/guzzle
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-17 18:11:05 +00:00
Julius Härtl
79fd89b3c4 Merge pull request #4692 from nextcloud/update-main-version 2023-05-17 20:10:38 +02:00
Joas Schilling
0824921b2d feat(deps): Add Nextcloud 28 support on main
Signed-off-by: Joas Schilling <coding@schilljs.com>
2023-05-17 15:26:57 +02:00
Julius Härtl
a9a4aceaac chore(webpack): Remove outdated config for hmr
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-17 09:53:51 +02:00
Julius Härtl
d096208f58 chore(webpack): Move to shared code for entrypoints and use webpack serve public path
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-17 09:53:50 +02:00
Julius Härtl
9f753e4395 chore(webpack): Add npm run serve command
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-17 09:51:16 +02:00
129 changed files with 5558 additions and 2697 deletions

View File

@@ -13,7 +13,7 @@ updates:
- juliushaertl
- package-ecosystem: npm
target-branch: stable25
target-branch: stable27
versioning-strategy: lockfile-only
directory: "/"
schedule:
@@ -30,7 +30,7 @@ updates:
- dependencies
- package-ecosystem: npm
target-branch: stable24
target-branch: stable26
versioning-strategy: lockfile-only
directory: "/"
schedule:

View File

@@ -16,15 +16,15 @@ jobs:
node-version: [16.x]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Set up npm7
run: npm i -g npm@7
- name: Setup PHP
uses: shivammathur/setup-php@2.25.1
uses: shivammathur/setup-php@2.27.1
with:
php-version: '7.4'
tools: composer

View File

@@ -10,7 +10,7 @@ on:
types: [published]
env:
PHP_VERSION: 8.1
PHP_VERSION: 8.2
jobs:
build_and_publish:
@@ -32,7 +32,7 @@ jobs:
echo "APP_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
path: ${{ env.APP_NAME }}
@@ -44,19 +44,19 @@ jobs:
expression: "//info//dependencies//nextcloud/@min-version"
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@0ce2ed60f6df073a62a77c0a4958dd0fc68e32e7 # v2.1
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
id: versions
# Continue if no package.json
continue-on-error: true
with:
path: ${{ env.APP_NAME }}
fallbackNode: "^16"
fallbackNpm: "^7"
fallbackNode: '^20'
fallbackNpm: '^9'
- 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@8f152de45cc393bb48ce5d89d36b731f54556e65 # v3
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
@@ -66,7 +66,7 @@ jobs:
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
- name: Set up php ${{ env.PHP_VERSION }}
uses: shivammathur/setup-php@2.25.1 # v2
uses: shivammathur/setup-php@e6f75134d35752277f093989e72e140eaa222f35 # v2
with:
php-version: ${{ env.PHP_VERSION }}
coverage: none
@@ -88,6 +88,8 @@ jobs:
- name: Build ${{ env.APP_NAME }}
# Skip if no package.json
if: ${{ steps.versions.outputs.nodeVersion }}
env:
CYPRESS_INSTALL_BINARY: 0
run: |
cd ${{ env.APP_NAME }}
npm ci
@@ -126,9 +128,10 @@ jobs:
unzip latest-$NCVERSION.zip
- name: Checkout server master fallback
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
if: ${{ steps.server-checkout.outcome != 'success' }}
with:
submodules: true
repository: nextcloud/server
path: nextcloud
@@ -148,7 +151,7 @@ jobs:
tar -zcvf ${{ env.APP_NAME }}.tar.gz ${{ env.APP_NAME }}
- name: Attach tarball to github release
uses: svenstaro/upload-release-action@7319e4733ec7a184d739a6f412c40ffc339b69c7 # v2
uses: svenstaro/upload-release-action@1beeb572c19a9242f4361f4cee78f8e0d9aec5df # v2
id: attach_to_release
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -23,7 +23,7 @@ jobs:
steps:
- name: Add reaction on start
uses: peter-evans/create-or-update-comment@ca08ebd5dc95aa0cd97021e9708fcd6b87138c9b # v3.0.1
uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.1.0
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@v4 # v3.5.2
with:
fetch-depth: 0
token: ${{ secrets.COMMAND_BOT_PAT }}
- name: Automatic Rebase
uses: cirrus-actions/rebase@6e572f08c244e2f04f9beb85a943eb618218714d # 1.7
uses: cirrus-actions/rebase@b87d48154a87a85666003575337e27b8cd65f691 # 1.8
env:
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
- name: Add reaction on failure
uses: peter-evans/create-or-update-comment@ca08ebd5dc95aa0cd97021e9708fcd6b87138c9b # v3.0.1
uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.1.0
if: failure()
with:
token: ${{ secrets.COMMAND_BOT_PAT }}

View File

@@ -19,19 +19,17 @@ jobs:
strategy:
fail-fast: false
matrix:
node-version: [14.x]
node-version: [20.x]
# containers: [1, 2, 3]
php-versions: [ '8.0' ]
databases: [ 'sqlite' ]
server-versions: [ 'stable27' ]
server-versions: [ 'stable28' ]
steps:
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Set up npm7
run: npm i -g npm@7
- name: Register text Git reference
run: |
@@ -39,7 +37,7 @@ jobs:
echo "text_app_ref=$text_app_ref" >> $GITHUB_ENV
- name: Checkout server
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
repository: nextcloud/server
ref: ${{ matrix.server-versions }}
@@ -52,19 +50,19 @@ jobs:
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
- name: Checkout ${{ env.APP_NAME }}
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
path: apps/${{ env.APP_NAME }}
- name: Checkout text
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
repository: nextcloud/text
ref: ${{ env.text_app_ref }}
path: apps/text
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@2.25.1
uses: shivammathur/setup-php@2.27.1
with:
php-version: ${{ matrix.php-versions }}
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, zip, gd, apcu
@@ -96,9 +94,9 @@ jobs:
curl -v http://localhost:8081/index.php/login
- name: Cypress run
uses: cypress-io/github-action@v5
uses: cypress-io/github-action@v6
with:
record: true
record: false
parallel: false
wait-on: '${{ env.CYPRESS_baseUrl }}'
working-directory: 'apps/${{ env.APP_NAME }}'

View File

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

View File

@@ -28,7 +28,7 @@ jobs:
matrix:
php-versions: ['8.1']
databases: ['sqlite', 'mysql', 'pgsql']
server-versions: ['stable27']
server-versions: ['stable28']
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
@@ -52,7 +52,7 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
repository: nextcloud/server
ref: ${{ matrix.server-versions }}
@@ -66,7 +66,7 @@ jobs:
cd build/integration && composer require --dev phpunit/phpunit:~9
- name: Checkout app
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
path: apps/${{ env.APP_NAME }}
@@ -78,7 +78,7 @@ jobs:
path: apps/activity
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@2.25.1
uses: shivammathur/setup-php@2.27.1
with:
php-version: ${{ matrix.php-versions }}
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, mysql, pdo_mysql, pgsql, pdo_pgsql, apcu
@@ -114,7 +114,7 @@ jobs:
- name: Query count
if: ${{ matrix.databases == 'mysql' }}
uses: actions/github-script@v6
uses: actions/github-script@v7
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |

View File

@@ -6,22 +6,9 @@
# 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
name: Lint eslint
on:
pull_request:
paths:
- '.github/workflows/**'
- 'src/**'
- 'appinfo/info.xml'
- 'package.json'
- 'package-lock.json'
- 'tsconfig.json'
- '.eslintrc.*'
- '.eslintignore'
- '**.js'
- '**.ts'
- '**.vue'
on: pull_request
permissions:
contents: read
@@ -31,24 +18,52 @@ concurrency:
cancel-in-progress: true
jobs:
changes:
runs-on: ubuntu-latest
outputs:
src: ${{ steps.changes.outputs.src}}
steps:
- uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1
id: changes
continue-on-error: true
with:
filters: |
src:
- '.github/workflows/**'
- 'src/**'
- 'appinfo/info.xml'
- 'package.json'
- 'package-lock.json'
- 'tsconfig.json'
- '.eslintrc.*'
- '.eslintignore'
- '**.js'
- '**.ts'
- '**.vue'
lint:
runs-on: ubuntu-latest
name: eslint
needs: changes
if: needs.changes.outputs.src != 'false'
name: NPM lint
steps:
- name: Checkout
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@0ce2ed60f6df073a62a77c0a4958dd0fc68e32e7 # v2.1
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
id: versions
with:
fallbackNode: '^16'
fallbackNpm: '^7'
fallbackNode: '^20'
fallbackNpm: '^9'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # v3
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v3
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
@@ -56,7 +71,25 @@ jobs:
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
- name: Install dependencies
env:
CYPRESS_INSTALL_BINARY: 0
PUPPETEER_SKIP_DOWNLOAD: true
run: npm ci
- name: Lint
run: npm run lint
summary:
permissions:
contents: none
runs-on: ubuntu-latest
needs: [changes, lint]
if: always()
# This is the summary, we just avoid to rename it so that branch protection rules still match
name: eslint
steps:
- name: Summary status
run: if ${{ needs.changes.outputs.src != 'false' && needs.lint.result != 'success' }}; then exit 1; fi

View File

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

View File

@@ -3,15 +3,9 @@
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
name: Lint
name: Lint php
on:
pull_request:
push:
branches:
- main
- master
- stable*
on: pull_request
permissions:
contents: read
@@ -25,19 +19,20 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: [ "8.0", "8.1", "8.2" ]
php-versions: [ '8.0', '8.1', '8.2', '8.3' ]
name: php-lint
steps:
- name: Checkout
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@2.25.1 # v2
uses: shivammathur/setup-php@e6f75134d35752277f093989e72e140eaa222f35 # v2
with:
php-version: ${{ matrix.php-versions }}
coverage: none
ini-file: development
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -3,7 +3,7 @@
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
name: Lint
name: Lint stylelint
on: pull_request
@@ -22,17 +22,17 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@0ce2ed60f6df073a62a77c0a4958dd0fc68e32e7 # v2.1
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
id: versions
with:
fallbackNode: '^16'
fallbackNpm: '^7'
fallbackNode: '^20'
fallbackNpm: '^9'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # v3
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v3
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
@@ -40,6 +40,8 @@ jobs:
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
- name: Install dependencies
env:
CYPRESS_INSTALL_BINARY: 0
run: npm ci
- name: Lint

View File

@@ -1,64 +0,0 @@
name: Package nightly
on:
push:
branches:
- nightly
schedule:
- cron: '0 1 * * *' # run at 2 AM UTC
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x]
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ 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: Setup PHP
uses: shivammathur/setup-php@2.25.1
with:
php-version: '7.4'
tools: composer
- name: install dependencies
run: |
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
RUST_BACKTRACE=1 krankerl --version
RUST_BACKTRACE=1 krankerl package
- name: Set git config
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git tag -f nightly
- name: Push tag
uses: juliushaertl/github-push-action@main
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
tags: true
force: true
- name: Create Release
id: create_release
uses: juliushaertl/action-release@main
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag: nightly
files: ./build/artifacts/deck.tar.gz
name: Nightly build
body: |
Nightly release of deck
draft: false
prerelease: true
overwrite: true

View File

@@ -12,9 +12,9 @@ jobs:
node-version: [14.x]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Set up npm7

View File

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

View File

@@ -26,9 +26,9 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.0', '8.1']
php-versions: ['8.0', '8.1', '8.2', '8.3']
databases: ['sqlite', 'mysql', 'pgsql']
server-versions: ['stable27']
server-versions: ['stable28']
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
@@ -52,7 +52,7 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
repository: nextcloud/server
ref: ${{ matrix.server-versions }}
@@ -65,12 +65,12 @@ jobs:
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
- name: Checkout app
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
path: apps/${{ env.APP_NAME }}
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@2.25.1
uses: shivammathur/setup-php@2.27.1
with:
php-version: ${{ matrix.php-versions }}
tools: phpunit

34
.github/workflows/pr-feedback.yml vendored Normal file
View File

@@ -0,0 +1,34 @@
# 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: 'Ask for feedback on PRs'
on:
schedule:
- cron: '30 1 * * *'
jobs:
pr-feedback:
runs-on: ubuntu-latest
steps:
- name: The get-github-handles-from-website action
uses: marcelklehr/get-github-handles-from-website-action@a739600f6b91da4957f51db0792697afbb2f143c # v1.0.0
id: scrape
with:
website: 'https://nextcloud.com/team/'
- uses: marcelklehr/pr-feedback-action@601109aa729eb4c8d6d0ece7567b9d4901db4aef
with:
feedback-message: |
Hello there,
Thank you so much for taking the time and effort to create a pull request to our Nextcloud project.
We hope that the review process is going smooth and is helpful for you. We want to ensure your pull request is reviewed to your satisfaction. If you have a moment, our community management team would very much appreciate your feedback on your experience with this PR review process.
Your feedback is valuable to us as we continuously strive to improve our community developer experience. Please take a moment to complete our short survey by clicking on the following link: https://cloud.nextcloud.com/apps/forms/s/i9Ago4EQRZ7TWxjfmeEpPkf6
Thank you for contributing to Nextcloud and we hope to hear from you soon!
days-before-feedback: 14
start-date: "2023-07-10"
exempt-authors: "${{ steps.scrape.outputs.users }},nextcloud-command,nextcloud-android-bot,skjnldsv,datenangebot"
exempt-bots: true

View File

@@ -5,13 +5,7 @@
name: Static analysis
on:
pull_request:
push:
branches:
- master
- main
- stable*
on: pull_request
concurrency:
group: psalm-${{ github.head_ref || github.run_id }}
@@ -21,16 +15,17 @@ jobs:
static-analysis:
runs-on: ubuntu-latest
name: Nextcloud
name: static-psalm-analysis
steps:
- name: Checkout
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Set up php
uses: shivammathur/setup-php@2.25.1 # v2
- name: Set up php8.2
uses: shivammathur/setup-php@e6f75134d35752277f093989e72e140eaa222f35 # v2
with:
php-version: 8.1
php-version: 8.2
coverage: none
ini-file: development
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -17,42 +17,90 @@ jobs:
strategy:
fail-fast: false
matrix:
branches: ["master", "stable26", "stable25", "stable24"]
branches: ['main', 'master', 'stable28', 'stable27', 'stable26']
name: update-nextcloud-ocp-${{ matrix.branches }}
steps:
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
- id: checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
ref: ${{ matrix.branches }}
submodules: true
continue-on-error: true
- name: Set up php8.1
uses: shivammathur/setup-php@2.25.1 # v2
- name: Set up php8.2
if: steps.checkout.outcome == 'success'
uses: shivammathur/setup-php@e6f75134d35752277f093989e72e140eaa222f35 # v2
with:
php-version: 8.1
extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
php-version: 8.2
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Read codeowners
if: steps.checkout.outcome == 'success'
id: codeowners
run: |
grep '/appinfo/info.xml' .github/CODEOWNERS | cut -f 2- -d ' ' | xargs | awk '{ print "codeowners="$0 }' >> $GITHUB_OUTPUT
continue-on-error: true
- name: Composer install
if: steps.checkout.outcome == 'success'
run: composer install
- name: Composer update nextcloud/ocp
id: update_branch
if: ${{ steps.checkout.outcome == 'success' && matrix.branches != 'main' }}
run: composer require --dev nextcloud/ocp:dev-${{ matrix.branches }}
continue-on-error: true
- name: Reset checkout dirs
- name: Raise on issue on failure
uses: dacbd/create-issue-action@ba4d1c45cccf9c483f2720cefb40e437f0ee6f7d # v1.2.1
if: ${{ steps.checkout.outcome == 'success' && failure() && steps.update_branch.conclusion == 'failure' }}
with:
token: ${{ secrets.GITHUB_TOKEN }}
title: Failed to update nextcloud/ocp package on branch ${{ matrix.branches }}
body: Please check the output of the GitHub action and manually resolve the issues<br>${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}<br>${{ steps.codeowners.outputs.codeowners }}
- name: Composer update nextcloud/ocp
id: update_main
if: ${{ steps.checkout.outcome == 'success' && matrix.branches == 'main' }}
run: composer require --dev nextcloud/ocp:dev-master
- name: Raise on issue on failure
uses: dacbd/create-issue-action@ba4d1c45cccf9c483f2720cefb40e437f0ee6f7d # v1.2.1
if: ${{ steps.checkout.outcome == 'success' && failure() && steps.update_main.conclusion == 'failure' }}
with:
token: ${{ secrets.GITHUB_TOKEN }}
title: Failed to update nextcloud/ocp package on branch ${{ matrix.branches }}
body: Please check the output of the GitHub action and manually resolve the issues<br>${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}<br>${{ steps.codeowners.outputs.codeowners }}
- name: Reset checkout 3rdparty
if: steps.checkout.outcome == 'success'
run: |
git clean -f 3rdparty
git checkout 3rdparty
continue-on-error: true
- name: Reset checkout vendor
if: steps.checkout.outcome == 'success'
run: |
git clean -f vendor
git checkout vendor
continue-on-error: true
- name: Reset checkout vendor-bin
if: steps.checkout.outcome == 'success'
run: |
git clean -f vendor-bin
git checkout 3rdparty vendor vendor-bin
git checkout vendor-bin
continue-on-error: true
- name: Create Pull Request
uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666 # v3
if: steps.checkout.outcome == 'success'
uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38 # v3
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
commit-message: "chore(dev-deps): Bump nextcloud/ocp package"

View File

@@ -1,89 +1,177 @@
# Changelog
All notable changes to this project will be documented in this file.
## 1.11.3
## 1.12.1
### Fixed
- fix: allow null label colors in trello json importer @juliushaertl [#5438](https://github.com/nextcloud/deck/pull/5438)
- Fix deleted card/board issues @juliushaertl [#5442](https://github.com/nextcloud/deck/pull/5442)
- Fix deleted card/board issues @juliushaertl [#5441](https://github.com/nextcloud/deck/pull/5441)
- Fixing #5451 [#5457](https://github.com/nextcloud/deck/pull/5457)
- fix: Add debounce to update due date [#5483](https://github.com/nextcloud/deck/pull/5483)
- fix(i18n): Fixed typo [#5424](https://github.com/nextcloud/deck/pull/5424)
### Other
- Fix small issues around delete/undo @juliushaertl [#5420](https://github.com/nextcloud/deck/pull/5420)
## 1.11.2
### Fixed
- fix: Use text content as result for comments [#5297](https://github.com/nextcloud/deck/pull/5297)
## 1.11.1
## 1.12.0
### Added
- feat: remember last board, list for new card dialog [#5049](https://github.com/nextcloud/deck/pull/5049)
- feat: update smart picker links [#5072](https://github.com/nextcloud/deck/pull/5072)
- Added ability to mark a card as done @TehThanos [#4137](https://github.com/nextcloud/deck/pull/4137)
- Card Cover Images @jszeibert [#5035](https://github.com/nextcloud/deck/pull/5035)
- Upcoming/Today/Tomorrow dashboard widgets @BKapelari [#2658](https://github.com/nextcloud/deck/pull/2658)
- Enabled advanced fields option on tag color picker @faab007nl [#4362](https://github.com/nextcloud/deck/pull/4362)
- Remember last board, list for new card dialog @luka-nextcloud [#5046](https://github.com/nextcloud/deck/pull/5046)
- Add support for bidirectional text @jamazi [#5258](https://github.com/nextcloud/deck/pull/5258)
- Card layout polishing @juliushaertl [#5264](https://github.com/nextcloud/deck/pull/5264)
- feat: Move to contenteditable for inline title editing @juliushaertl [#5282](https://github.com/nextcloud/deck/pull/5282)
- scroll board by dragging @shoetten [#5293](https://github.com/nextcloud/deck/pull/5293)
- Keyboard shortcuts [#5358](https://github.com/nextcloud/deck/pull/5358)
### Fixed
- fix: export doesn't handle lists with no cards [#5118](https://github.com/nextcloud/deck/pull/5118)
- fix: Check both card reference url patterns [#5263](https://github.com/nextcloud/deck/pull/5263)
- Issue triage fix collection @juliushaertl [#5286](https://github.com/nextcloud/deck/pull/5286)
- fix: open card in modal on main route [#5288](https://github.com/nextcloud/deck/pull/5288)
- fix: Avoid too large index on postgres as indexing just the last_editor column is enough [#5291](https://github.com/nextcloud/deck/pull/5291)
- fix: error msg on CreateNewCardCustomPicker & only show available bo… [#5030](https://github.com/nextcloud/deck/pull/5030)
- Remove duplicate button [#5043](https://github.com/nextcloud/deck/pull/5043)
- fix: allow null label colors in trello json importer [#5355](https://github.com/nextcloud/deck/pull/5355)
- fix: Get proper rich object for card actions [#5352](https://github.com/nextcloud/deck/pull/5352)
- fix: Use text content as result for comments @juliushaertl [#5294](https://github.com/nextcloud/deck/pull/5294)
- fix: Bring back due date indicator to compact mode @juliushaertl [#5292](https://github.com/nextcloud/deck/pull/5292)
- Fix small issues around delete/undo @juliushaertl [#5296](https://github.com/nextcloud/deck/pull/5296)
- fix(controls): use primary when filter is active @fitrahfm [#5299](https://github.com/nextcloud/deck/pull/5299)
- fix: Properly get done state for dav @juliushaertl [#5287](https://github.com/nextcloud/deck/pull/5287)
- Fix upcoming cards and label input @juliushaertl [#5290](https://github.com/nextcloud/deck/pull/5290)
- fix: Properly handle adding new tags through multiselect @juliushaertl [#5285](https://github.com/nextcloud/deck/pull/5285)
- fix: Avoid throwing errors if no token provided on close @juliushaertl [#5284](https://github.com/nextcloud/deck/pull/5284)
- fix: Expose card actions in the card menu (fix #3180) [#5280](https://github.com/nextcloud/deck/pull/5280)
- fix: Use full card menu everywhere (fix #3993) [#5280](https://github.com/nextcloud/deck/pull/5280)
- fix: Detect end of the activity responses (fix #3395) [#5280](https://github.com/nextcloud/deck/pull/5280)
- fix: Add title with absolute date time to activity (fix #4508, fix #2122) [#5280](https://github.com/nextcloud/deck/pull/5280)
- fix: Disable dragging archived cards (fix #3271) [#5280](https://github.com/nextcloud/deck/pull/5280)
- fix: Hide unavailable card menu entries for archived card view [#5280](https://github.com/nextcloud/deck/pull/5280)
- fix: Use localCompare to sort labels (fix #2736) [#5280](https://github.com/nextcloud/deck/pull/5280)
- fix: More fitting click target for title editing [#5280](https://github.com/nextcloud/deck/pull/5280)
- fix: Always load proper dashboard js (fixes a log error) [#5280](https://github.com/nextcloud/deck/pull/5280)
- fix: Set fixed height for card modal (fix #4296) [#5280](https://github.com/nextcloud/deck/pull/5280)
- fix: Make sure to always update card description when navigating away (fix #5254 #2705) [#5280](https://github.com/nextcloud/deck/pull/5280)
- perf: Already pass board list as initial state @juliushaertl [#5281](https://github.com/nextcloud/deck/pull/5281)
- Deck card comment notification label improvement @Jerome-Herbinet [#4748](https://github.com/nextcloud/deck/pull/4748)
- update smart picker links @luka-nextcloud [#5047](https://github.com/nextcloud/deck/pull/5047)
- feat: Enhance dark mode @juliushaertl [#5045](https://github.com/nextcloud/deck/pull/5045)
- fix: export doesn't handle lists with no cards @magikmw [#5096](https://github.com/nextcloud/deck/pull/5096)
- add attributes aria-label= and title= to Filters & View Modes buttons @privatemaker [#5133](https://github.com/nextcloud/deck/pull/5133)
- fix: Check both card reference url patterns @juliushaertl [#5262](https://github.com/nextcloud/deck/pull/5262)
- fix: Avoid too large index on postgres as indexing just the last_editor column is enough @juliushaertl [#5260](https://github.com/nextcloud/deck/pull/5260)
- feat: error msg on CreateNewCardCustomPicker & only show available bo… @luka-nextcloud [#5029](https://github.com/nextcloud/deck/pull/5029)
- test: add cypress tests for create new deck card @luka-nextcloud [#5025](https://github.com/nextcloud/deck/pull/5025)
- Remove duplicate button @solracsf [#4850](https://github.com/nextcloud/deck/pull/4850)
- [stable27] fix cypress for new file picker [#5088](https://github.com/nextcloud/deck/pull/5088)
- Replace "Timeline" wording with "Activity" in order to be consistent with equivalent contexts throughout Nextcloud @Jerome-Herbinet [#5164](https://github.com/nextcloud/deck/pull/5164)
- Board creation limitation : More understandable wordings @Jerome-Herbinet [#5168](https://github.com/nextcloud/deck/pull/5168)
- ci(cypress): Fix file picker selector @juliushaertl [#5212](https://github.com/nextcloud/deck/pull/5212)
- Switch to native date picker @juliushaertl [#4668](https://github.com/nextcloud/deck/pull/4668)
- fixes minor spelling error @FundreasFrohsinn [#5216](https://github.com/nextcloud/deck/pull/5216)
- feat(card): tooltip for comment timestamp @fitrahfm [#5253](https://github.com/nextcloud/deck/pull/5253)
### Other
- fix cypress for new file picker @juliushaertl [#5027](https://github.com/nextcloud/deck/pull/5027)
- test: add cypress tests for create new deck card [#5026](https://github.com/nextcloud/deck/pull/5026)
- Update dependencies
## 1.11.0
## 1.12.0-beta.5
### Added
- feat: Import of deck JSON data through occ [#5003](https://github.com/nextcloud/deck/pull/5003)
- feat: create new card from smart picker [#5000](https://github.com/nextcloud/deck/pull/5000)
- feat: update smart picker links [#5072](https://github.com/nextcloud/deck/pull/5072)
- feat: remember last board, list for new card dialog [#5049](https://github.com/nextcloud/deck/pull/5049)
- Keyboard shortcuts [#5358](https://github.com/nextcloud/deck/pull/5358)
### Fixed
- Fix(occ): set user id for permission sevice from board service [#4813](https://github.com/nextcloud/deck/pull/4813)
- fix: Allow dynamic autoloading for classes added during upgrade [#4804](https://github.com/nextcloud/deck/pull/4804)
- fix(notification): Prevent null in parameters [#4909](https://github.com/nextcloud/deck/pull/4909)
- fix: Split query to fetch board ids to avoid slow query join @juliushaertl [#4949](https://github.com/nextcloud/deck/pull/4949)
- fix: export doesn't handle lists with no cards [#5118](https://github.com/nextcloud/deck/pull/5118)
- fix: execute return int for export command [#4811](https://github.com/nextcloud/deck/pull/4811)
- fix: crash when leaving out system parameter [#4831](https://github.com/nextcloud/deck/pull/4831)
- test: add cypress tests for create new deck card [#5026](https://github.com/nextcloud/deck/pull/5026)
- feat: error msg on CreateNewCardCustomPicker & only show available bo… [#5030](https://github.com/nextcloud/deck/pull/5030)
- Remove duplicate button [#5043](https://github.com/nextcloud/deck/pull/5043)
- fix: allow null label colors in trello json importer [#5355](https://github.com/nextcloud/deck/pull/5355)
- fix: Get proper rich object for card actions [#5352](https://github.com/nextcloud/deck/pull/5352)
### Other
### Dependencies
- Dependency updates
- Update nextcloud/ocp dependency @nextcloud-command [#5343](https://github.com/nextcloud/deck/pull/5343)
- Chore(deps): Bump @babel/runtime from 7.23.4 to 7.23.5 @dependabot[bot] [#5338](https://github.com/nextcloud/deck/pull/5338)
## 1.11.0-beta.1
## 1.12.0-beta.4
### Added
- Import deck json files through occ @juliushaertl [#5003](https://github.com/nextcloud/deck/pull/5003)
- Create new card via smart picker [#5000](https://github.com/nextcloud/deck/pull/5000)
- scroll board by dragging @shoetten [#5293](https://github.com/nextcloud/deck/pull/5293)
### Fixed
- Fix(occ): set user id for permission sevice from board service [#4813](https://github.com/nextcloud/deck/pull/4813)
- fix: Allow dynamic autoloading for classes added during upgrade [#4804](https://github.com/nextcloud/deck/pull/4804)
- fix(notification): Prevent null in parameters [#4909](https://github.com/nextcloud/deck/pull/4909)
- fix: Split query to fetch board ids to avoid slow query join @juliushaertl [#4949](https://github.com/nextcloud/deck/pull/4949)
- fix: execute return int for export command [#4811](https://github.com/nextcloud/deck/pull/4811)
- fix: crash when leaving out system parameter [#4831](https://github.com/nextcloud/deck/pull/4831)
- fix: Use text content as result for comments @juliushaertl [#5294](https://github.com/nextcloud/deck/pull/5294)
- fix: Bring back due date indicator to compact mode @juliushaertl [#5292](https://github.com/nextcloud/deck/pull/5292)
- Fix small issues around delete/undo @juliushaertl [#5296](https://github.com/nextcloud/deck/pull/5296)
- fix(controls): use primary when filter is active @fitrahfm [#5299](https://github.com/nextcloud/deck/pull/5299)
## 1.10.0
## 1.12.0-beta.3
### Added
- feat: Move to contenteditable for inline title editing @juliushaertl [#5282](https://github.com/nextcloud/deck/pull/5282)
### Fixed
- fix: Properly get done state for dav @juliushaertl [#5287](https://github.com/nextcloud/deck/pull/5287)
- Fix upcoming cards and label input @juliushaertl [#5290](https://github.com/nextcloud/deck/pull/5290)
## 1.12.0-beta.2
### Added
- Card layout polishing @juliushaertl [#5264](https://github.com/nextcloud/deck/pull/5264)
### Fixed
- fix: Properly handle adding new tags through multiselect @juliushaertl [#5285](https://github.com/nextcloud/deck/pull/5285)
- fix: Avoid throwing errors if no token provided on close @juliushaertl [#5284](https://github.com/nextcloud/deck/pull/5284)
- fix: Expose card actions in the card menu (fix #3180) [#5280](https://github.com/nextcloud/deck/pull/5280)
- fix: Use full card menu everywhere (fix #3993) [#5280](https://github.com/nextcloud/deck/pull/5280)
- fix: Detect end of the activity responses (fix #3395) [#5280](https://github.com/nextcloud/deck/pull/5280)
- fix: Add title with absolute date time to activity (fix #4508, fix #2122) [#5280](https://github.com/nextcloud/deck/pull/5280)
- fix: Disable dragging archived cards (fix #3271) [#5280](https://github.com/nextcloud/deck/pull/5280)
- fix: Hide unavailable card menu entries for archived card view [#5280](https://github.com/nextcloud/deck/pull/5280)
- fix: Use localCompare to sort labels (fix #2736) [#5280](https://github.com/nextcloud/deck/pull/5280)
- fix: More fitting click target for title editing [#5280](https://github.com/nextcloud/deck/pull/5280)
- fix: Always load proper dashboard js (fixes a log error) [#5280](https://github.com/nextcloud/deck/pull/5280)
- fix: Set fixed height for card modal (fix #4296) [#5280](https://github.com/nextcloud/deck/pull/5280)
- fix: Make sure to always update card description when navigating away (fix #5254 #2705) [#5280](https://github.com/nextcloud/deck/pull/5280)
- perf: Already pass board list as initial state @juliushaertl [#5281](https://github.com/nextcloud/deck/pull/5281)
### Dependencies
- Fix npm audit @nextcloud-command [#5277](https://github.com/nextcloud/deck/pull/5277)
- Update nextcloud/ocp dependency @nextcloud-command [#5275](https://github.com/nextcloud/deck/pull/5275)
- Chore(deps): Bump @nextcloud/dialogs from 4.2.1 to 4.2.2 @dependabot[bot] [#5266](https://github.com/nextcloud/deck/pull/5266)
- Chore(deps-dev): Bump cypress from 13.4.0 to 13.5.0 @dependabot[bot] [#5267](https://github.com/nextcloud/deck/pull/5267)
- Chore(deps): Bump shivammathur/setup-php from 2.27.0 to 2.27.1 @dependabot[bot] [#5268](https://github.com/nextcloud/deck/pull/5268)
## 1.12.0-beta.1
### Added
- Added ability to mark a card as done @TehThanos [#4137](https://github.com/nextcloud/deck/pull/4137)
- Card Cover Images @jszeibert [#5035](https://github.com/nextcloud/deck/pull/5035)
- Upcoming/Today/Tomorrow dashboard widgets @BKapelari [#2658](https://github.com/nextcloud/deck/pull/2658)
- Enabled advanced fields option on tag color picker @faab007nl [#4362](https://github.com/nextcloud/deck/pull/4362)
- Remember last board, list for new card dialog @luka-nextcloud [#5046](https://github.com/nextcloud/deck/pull/5046)
- Add support for bidirectional text @jamazi [#5258](https://github.com/nextcloud/deck/pull/5258)
### Fixed
- Deck card comment notification label improvement @Jerome-Herbinet [#4748](https://github.com/nextcloud/deck/pull/4748)
- update smart picker links @luka-nextcloud [#5047](https://github.com/nextcloud/deck/pull/5047)
- feat: Enhance dark mode @juliushaertl [#5045](https://github.com/nextcloud/deck/pull/5045)
- fix: export doesn't handle lists with no cards @magikmw [#5096](https://github.com/nextcloud/deck/pull/5096)
- add attributes aria-label= and title= to Filters & View Modes buttons @privatemaker [#5133](https://github.com/nextcloud/deck/pull/5133)
- fix: Check both card reference url patterns @juliushaertl [#5262](https://github.com/nextcloud/deck/pull/5262)
- fix: Avoid too large index on postgres as indexing just the last_editor column is enough @juliushaertl [#5260](https://github.com/nextcloud/deck/pull/5260)
- feat: error msg on CreateNewCardCustomPicker & only show available bo… @luka-nextcloud [#5029](https://github.com/nextcloud/deck/pull/5029)
- test: add cypress tests for create new deck card @luka-nextcloud [#5025](https://github.com/nextcloud/deck/pull/5025)
- Remove duplicate button @solracsf [#4850](https://github.com/nextcloud/deck/pull/4850)
- [stable27] fix cypress for new file picker [#5088](https://github.com/nextcloud/deck/pull/5088)
- Replace "Timeline" wording with "Activity" in order to be consistent with equivalent contexts throughout Nextcloud @Jerome-Herbinet [#5164](https://github.com/nextcloud/deck/pull/5164)
- Board creation limitation : More understandable wordings @Jerome-Herbinet [#5168](https://github.com/nextcloud/deck/pull/5168)
- ci(cypress): Fix file picker selector @juliushaertl [#5212](https://github.com/nextcloud/deck/pull/5212)
- Switch to native date picker @juliushaertl [#4668](https://github.com/nextcloud/deck/pull/4668)
- fixes minor spelling error @FundreasFrohsinn [#5216](https://github.com/nextcloud/deck/pull/5216)
- feat(card): tooltip for comment timestamp @fitrahfm [#5253](https://github.com/nextcloud/deck/pull/5253)
## 1.10.0-beta.1
### Added
@@ -91,8 +179,6 @@ All notable changes to this project will be documented in this file.
### Fixed
- fix: Properly overwrite z-index of datepicker above modal @juliushaertl [#4664](https://github.com/nextcloud/deck/pull/4664)
- Use the color-primary-element* variables @szaimen [#4673](https://github.com/nextcloud/deck/pull/4673)
- fix(references): Mute NoPermissionException as it is expected to happen for references @juliushaertl [#4514](https://github.com/nextcloud/deck/pull/4514)
- fix(cards): Fix card sizing by limiting too wide style rules @juliushaertl [#4512](https://github.com/nextcloud/deck/pull/4512)
- fix: Adapt NcEmptyContent usages to new slots @juliushaertl [#4561](https://github.com/nextcloud/deck/pull/4561)
@@ -112,12 +198,7 @@ All notable changes to this project will be documented in this file.
- Better display of card dates (creation and change dates) @Jerome-Herbinet [#4604](https://github.com/nextcloud/deck/pull/4604)
- Refactors lib\Activity\DeckProvider.php to improve code readability. @fsamapoor [#4648](https://github.com/nextcloud/deck/pull/4648)
- Converts 'strpos()' calls to improve code readability. @fsamapoor [#4657](https://github.com/nextcloud/deck/pull/4657)
- Dependency updates
### Other
- feat: Add devcontainer and update dev docs @juliushaertl [#4683](https://github.com/nextcloud/deck/pull/4683)
- chore(CI): Adjust testing matrix for Nextcloud 27 on stable27 @nickvergessen [#4691](https://github.com/nextcloud/deck/pull/4691)
## 1.9.0-beta.1

View File

@@ -27,6 +27,7 @@ Deck is a kanban style organization tool aimed at personal planning and project
- [trello-to-deck](https://github.com/maxammann/trello-to-deck) - Migrates cards from Trello
- [mail2deck](https://github.com/newroco/mail2deck) - Provides an "email in" solution
- [A-deck](https://github.com/leoossa/A-deck) - Chrome Extension that allows to create new card in selected stack based on current tab
- [QOwnNotes](https://github.com/pbek/QOwnNotes) - Quickly creates cards and links to them in Markdown notes
## Installation/Update
@@ -76,7 +77,7 @@ You can enable HMR (Hot module replacement) to avoid page reloads when working o
### Docker: Simple app development container
- Fork the app
- Fork the app
- Clone the repository: `git clone https://github.com/nextcloud/deck.git`
- Go into deck directory: `cd deck`
- Build the app as described in the general build instructions
@@ -92,7 +93,7 @@ docker run --rm \
### Full Nextcloud development 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.
After the finished installation, you can clone the deck project directly in the `/[nextcloud-docker-dev-dir]/workspace/server/apps/` folder.
### Running tests
You can use the provided Makefile to run all tests by using:

View File

@@ -16,7 +16,7 @@
- 🚀 Get your project organized
</description>
<version>1.11.3</version>
<version>1.12.1</version>
<licence>agpl</licence>
<author>Julius Härtl</author>
<documentation>
@@ -38,7 +38,7 @@
<database min-version="9.4">pgsql</database>
<database>sqlite</database>
<database min-version="8.0">mysql</database>
<nextcloud min-version="27" max-version="27"/>
<nextcloud min-version="28" max-version="28"/>
</dependencies>
<background-jobs>
<job>OCA\Deck\Cron\DeleteCron</job>
@@ -58,9 +58,9 @@
</commands>
<activity>
<settings>
<setting>OCA\Deck\Activity\Setting</setting>
<setting>OCA\Deck\Activity\SettingChanges</setting>
<setting>OCA\Deck\Activity\SettingDescription</setting>
<setting>OCA\Deck\Activity\SettingComment</setting>
<setting>OCA\Deck\Activity\DescriptionSetting</setting>
</settings>
<filters>
<filter>OCA\Deck\Activity\Filter</filter>

View File

@@ -25,6 +25,11 @@
return [
'routes' => [
['name' => 'page#index', 'url' => '/', 'verb' => 'GET'],
['name' => 'page#indexList', 'url' => '/board', 'verb' => 'GET'],
['name' => 'page#indexBoard', 'url' => '/board/{boardId}', 'verb' => 'GET'],
['name' => 'page#indexBoardDetails', 'url' => '/board/{boardId}/details', 'verb' => 'GET'],
['name' => 'page#indexCard', 'url' => '/board/{boardId}/card/{cardId}', 'verb' => 'GET'],
['name' => 'page#redirectToCard', 'url' => '/card/{cardId}', 'verb' => 'GET'],
// boards
@@ -61,6 +66,8 @@ return [
['name' => 'card#reorder', 'url' => '/cards/{cardId}/reorder', 'verb' => 'PUT'],
['name' => 'card#archive', 'url' => '/cards/{cardId}/archive', 'verb' => 'PUT'],
['name' => 'card#unarchive', 'url' => '/cards/{cardId}/unarchive', 'verb' => 'PUT'],
['name' => 'card#done', 'url' => '/cards/{cardId}/done', 'verb' => 'PUT'],
['name' => 'card#undone', 'url' => '/cards/{cardId}/undone', 'verb' => 'PUT'],
['name' => 'card#assignLabel', 'url' => '/cards/{cardId}/label/{labelId}', 'verb' => 'POST'],
['name' => 'card#removeLabel', 'url' => '/cards/{cardId}/label/{labelId}', 'verb' => 'DELETE'],
['name' => 'card#assignUser', 'url' => '/cards/{cardId}/assign', 'verb' => 'POST'],

View File

@@ -15,9 +15,8 @@
"roave/security-advisories": "dev-master",
"phpunit/phpunit": "^9",
"nextcloud/coding-standard": "^1.1",
"psalm/phar": "^5.13",
"php-parallel-lint/php-parallel-lint": "^1.2",
"nextcloud/ocp": "dev-stable27"
"nextcloud/ocp": "dev-stable28",
"psalm/phar": "^5.13"
},
"config": {
"optimize-autoloader": true,

460
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "25b1df7f8fcc7b43083c1d7b3178cd0f",
"content-hash": "2ab83bbc55ad8f0f50c5de28c10764ba",
"packages": [
{
"name": "justinrainbow/json-schema",
@@ -250,20 +250,20 @@
},
{
"name": "nextcloud/ocp",
"version": "dev-stable27",
"version": "dev-stable28",
"source": {
"type": "git",
"url": "https://github.com/nextcloud-deps/ocp.git",
"reference": "5972f70277496f0dd92e8e3a2c8c5e217eee649f"
"reference": "c0434f22a71dfb28d0862b7bc347ef963673c90c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/5972f70277496f0dd92e8e3a2c8c5e217eee649f",
"reference": "5972f70277496f0dd92e8e3a2c8c5e217eee649f",
"url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/c0434f22a71dfb28d0862b7bc347ef963673c90c",
"reference": "c0434f22a71dfb28d0862b7bc347ef963673c90c",
"shasum": ""
},
"require": {
"php": "^7.4 || ~8.0 || ~8.1",
"php": "~8.0 || ~8.1 || ~8.2 || ~8.3",
"psr/clock": "^1.0",
"psr/container": "^2.0.2",
"psr/event-dispatcher": "^1.0",
@@ -272,7 +272,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-stable27": "27.0.0-dev"
"dev-stable28": "28.0.0-dev"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -288,22 +288,22 @@
"description": "Composer package containing Nextcloud's public API (classes, interfaces)",
"support": {
"issues": "https://github.com/nextcloud-deps/ocp/issues",
"source": "https://github.com/nextcloud-deps/ocp/tree/stable27"
"source": "https://github.com/nextcloud-deps/ocp/tree/stable28"
},
"time": "2024-01-03T00:33:16+00:00"
"time": "2024-01-11T00:34:29+00:00"
},
{
"name": "nikic/php-parser",
"version": "v4.18.0",
"version": "v4.17.1",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999"
"reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999",
"reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d",
"reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d",
"shasum": ""
},
"require": {
@@ -344,9 +344,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
"source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0"
"source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1"
},
"time": "2023-12-10T21:03:43+00:00"
"time": "2023-08-13T19:53:39+00:00"
},
{
"name": "phar-io/manifest",
@@ -461,16 +461,16 @@
},
{
"name": "php-cs-fixer/shim",
"version": "v3.41.1",
"version": "v3.22.0",
"source": {
"type": "git",
"url": "https://github.com/PHP-CS-Fixer/shim.git",
"reference": "01cea2dca727100537bd63e28e06e49a475b54e9"
"reference": "f6692934a6d1fe40fd8bc3339487490baa4a6700"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHP-CS-Fixer/shim/zipball/01cea2dca727100537bd63e28e06e49a475b54e9",
"reference": "01cea2dca727100537bd63e28e06e49a475b54e9",
"url": "https://api.github.com/repos/PHP-CS-Fixer/shim/zipball/f6692934a6d1fe40fd8bc3339487490baa4a6700",
"reference": "f6692934a6d1fe40fd8bc3339487490baa4a6700",
"shasum": ""
},
"require": {
@@ -507,66 +507,9 @@
"description": "A tool to automatically fix PHP code style",
"support": {
"issues": "https://github.com/PHP-CS-Fixer/shim/issues",
"source": "https://github.com/PHP-CS-Fixer/shim/tree/v3.41.1"
"source": "https://github.com/PHP-CS-Fixer/shim/tree/v3.22.0"
},
"time": "2023-12-10T19:59:57+00:00"
},
{
"name": "php-parallel-lint/php-parallel-lint",
"version": "v1.3.2",
"source": {
"type": "git",
"url": "https://github.com/php-parallel-lint/PHP-Parallel-Lint.git",
"reference": "6483c9832e71973ed29cf71bd6b3f4fde438a9de"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-parallel-lint/PHP-Parallel-Lint/zipball/6483c9832e71973ed29cf71bd6b3f4fde438a9de",
"reference": "6483c9832e71973ed29cf71bd6b3f4fde438a9de",
"shasum": ""
},
"require": {
"ext-json": "*",
"php": ">=5.3.0"
},
"replace": {
"grogy/php-parallel-lint": "*",
"jakub-onderka/php-parallel-lint": "*"
},
"require-dev": {
"nette/tester": "^1.3 || ^2.0",
"php-parallel-lint/php-console-highlighter": "0.* || ^1.0",
"squizlabs/php_codesniffer": "^3.6"
},
"suggest": {
"php-parallel-lint/php-console-highlighter": "Highlight syntax in code snippet"
},
"bin": [
"parallel-lint"
],
"type": "library",
"autoload": {
"classmap": [
"./src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-2-Clause"
],
"authors": [
{
"name": "Jakub Onderka",
"email": "ahoj@jakubonderka.cz"
}
],
"description": "This tool check syntax of PHP files about 20x faster than serial check.",
"homepage": "https://github.com/php-parallel-lint/PHP-Parallel-Lint",
"support": {
"issues": "https://github.com/php-parallel-lint/PHP-Parallel-Lint/issues",
"source": "https://github.com/php-parallel-lint/PHP-Parallel-Lint/tree/v1.3.2"
},
"time": "2022-02-21T12:50:22+00:00"
"time": "2023-07-16T23:08:49+00:00"
},
{
"name": "phpunit/php-code-coverage",
@@ -889,16 +832,16 @@
},
{
"name": "phpunit/phpunit",
"version": "9.6.15",
"version": "9.6.13",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "05017b80304e0eb3f31d90194a563fd53a6021f1"
"reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/05017b80304e0eb3f31d90194a563fd53a6021f1",
"reference": "05017b80304e0eb3f31d90194a563fd53a6021f1",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f3d767f7f9e191eab4189abe41ab37797e30b1be",
"reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be",
"shasum": ""
},
"require": {
@@ -972,7 +915,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.15"
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.13"
},
"funding": [
{
@@ -988,20 +931,20 @@
"type": "tidelift"
}
],
"time": "2023-12-01T16:55:19+00:00"
"time": "2023-09-19T05:39:22+00:00"
},
{
"name": "psalm/phar",
"version": "5.18.0",
"version": "5.15.0",
"source": {
"type": "git",
"url": "https://github.com/psalm/phar.git",
"reference": "a78b5c2e8860c3b4242c63bc0864621278705f9a"
"reference": "19dde3eba5901ff50ca43a5e4c43540f097e0511"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/psalm/phar/zipball/a78b5c2e8860c3b4242c63bc0864621278705f9a",
"reference": "a78b5c2e8860c3b4242c63bc0864621278705f9a",
"url": "https://api.github.com/repos/psalm/phar/zipball/19dde3eba5901ff50ca43a5e4c43540f097e0511",
"reference": "19dde3eba5901ff50ca43a5e4c43540f097e0511",
"shasum": ""
},
"require": {
@@ -1021,9 +964,9 @@
"description": "Composer-based Psalm Phar",
"support": {
"issues": "https://github.com/psalm/phar/issues",
"source": "https://github.com/psalm/phar/tree/5.18.0"
"source": "https://github.com/psalm/phar/tree/5.15.0"
},
"time": "2023-12-16T09:41:14+00:00"
"time": "2023-08-21T03:20:52+00:00"
},
{
"name": "psr/clock",
@@ -1232,21 +1175,20 @@
"source": {
"type": "git",
"url": "https://github.com/Roave/SecurityAdvisories.git",
"reference": "3c2385497f806decca1e5abeba3cb8fd7caba4e0"
"reference": "6488b89b30eb204b9f78b3db4c2916914afa7445"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/3c2385497f806decca1e5abeba3cb8fd7caba4e0",
"reference": "3c2385497f806decca1e5abeba3cb8fd7caba4e0",
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/6488b89b30eb204b9f78b3db4c2916914afa7445",
"reference": "6488b89b30eb204b9f78b3db4c2916914afa7445",
"shasum": ""
},
"conflict": {
"3f/pygmentize": "<1.2",
"admidio/admidio": "<4.2.13",
"admidio/admidio": "<4.2.10",
"adodb/adodb-php": "<=5.20.20|>=5.21,<=5.21.3",
"aheinze/cockpit": "<2.2",
"aheinze/cockpit": "<=2.2.1",
"aimeos/aimeos-typo3": "<19.10.12|>=20,<20.10.5",
"airesvsg/acf-to-rest-api": "<=3.1",
"akaunting/akaunting": "<2.1.13",
"akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53",
"alextselegidis/easyappointments": "<1.5",
@@ -1258,34 +1200,30 @@
"anchorcms/anchor-cms": "<=0.12.7",
"andreapollastri/cipi": "<=3.1.15",
"andrewhaine/silverstripe-form-capture": ">=0.2,<=0.2.3|>=1,<1.0.2|>=2,<2.2.5",
"apache-solr-for-typo3/solr": "<2.8.3",
"apereo/phpcas": "<1.6",
"api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6|>=2.6,<2.7.10|>=3,<3.0.12|>=3.1,<3.1.3",
"appwrite/server-ce": "<=1.2.1",
"arc/web": "<3",
"area17/twill": "<1.2.5|>=2,<2.5.3",
"artesaos/seotools": "<0.17.2",
"asymmetricrypt/asymmetricrypt": "<9.9.99",
"asymmetricrypt/asymmetricrypt": ">=0,<9.9.99",
"athlon1600/php-proxy": "<=5.1",
"athlon1600/php-proxy-app": "<=3",
"austintoddj/canvas": "<=3.4.2",
"automad/automad": "<1.8",
"awesome-support/awesome-support": "<=6.0.7",
"aws/aws-sdk-php": ">=3,<3.2.1",
"azuracast/azuracast": "<0.18.3",
"backdrop/backdrop": "<1.24.2",
"backpack/crud": "<3.4.9",
"bacula-web/bacula-web": "<8.0.0.0-RC2-dev",
"badaso/core": "<2.7",
"bagisto/bagisto": "<0.1.5",
"barrelstrength/sprout-base-email": "<1.2.7",
"barrelstrength/sprout-forms": "<3.9",
"barryvdh/laravel-translation-manager": "<0.6.2",
"barzahlen/barzahlen-php": "<2.0.1",
"baserproject/basercms": "<4.8",
"baserproject/basercms": "<4.7.5",
"bassjobsen/bootstrap-3-typeahead": ">4.0.2",
"bigfork/silverstripe-form-capture": ">=3,<3.1.1",
"billz/raspap-webgui": "<2.9.5",
"billz/raspap-webgui": "<2.8.9",
"bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3",
"bmarshall511/wordpress_zero_spam": "<5.2.13",
"bolt/bolt": "<3.7.2",
@@ -1296,100 +1234,91 @@
"brotkrueml/schema": "<1.13.1|>=2,<2.5.1",
"brotkrueml/typo3-matomo-integration": "<1.3.2",
"buddypress/buddypress": "<7.2.1",
"bugsnag/bugsnag-laravel": "<2.0.2",
"bugsnag/bugsnag-laravel": ">=2,<2.0.2",
"bytefury/crater": "<6.0.2",
"cachethq/cachet": "<2.5.1",
"cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.1,<4.1.4|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10",
"cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10|= 1.3.7|>=4.1,<4.1.4",
"cakephp/database": ">=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10",
"cardgate/magento2": "<2.0.33",
"cardgate/woocommerce": "<=3.1.15",
"cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4",
"cartalyst/sentry": "<=2.1.6",
"catfan/medoo": "<1.7.5",
"cecil/cecil": "<7.47.1",
"centreon/centreon": "<22.10.0.0-beta1",
"centreon/centreon": "<22.10-beta.1",
"cesnet/simplesamlphp-module-proxystatistics": "<3.1",
"chriskacerguis/codeigniter-restserver": "<=2.7.1",
"civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3",
"cockpit-hq/cockpit": "<=2.6.3",
"cockpit-hq/cockpit": "<2.4.1",
"codeception/codeception": "<3.1.3|>=4,<4.1.22",
"codeigniter/framework": "<3.1.9",
"codeigniter4/framework": "<=4.4.2",
"codeigniter4/shield": "<1.0.0.0-beta8",
"codeigniter/framework": "<=3.0.6",
"codeigniter4/framework": "<4.3.5",
"codeigniter4/shield": "<1-beta.4|= 1.0.0-beta",
"codiad/codiad": "<=2.8.4",
"composer/composer": "<1.10.27|>=2,<2.2.22|>=2.3,<2.6.4",
"concrete5/concrete5": "<9.2.2",
"composer/composer": "<1.10.26|>=2-alpha.1,<2.2.12|>=2.3,<2.3.5",
"concrete5/concrete5": "<9.2|>= 9.0.0RC1, < 9.1.3",
"concrete5/core": "<8.5.8|>=9,<9.1",
"contao-components/mediaelement": ">=2.14.2,<2.21.1",
"contao/contao": ">=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4",
"contao/core": ">=2,<3.5.39",
"contao/core-bundle": "<4.9.42|>=4.10,<4.13.28|>=5,<5.1.10",
"contao/core-bundle": "<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4|= 4.10.0",
"contao/listing-bundle": ">=4,<4.4.8",
"contao/managed-edition": "<=1.5",
"cosenary/instagram": "<=2.3",
"craftcms/cms": "<=4.4.14",
"croogo/croogo": "<4",
"craftcms/cms": "<=4.4.9|>= 4.0.0-RC1, < 4.4.12|>= 4.0.0-RC1, <= 4.4.5|>= 4.0.0-RC1, <= 4.4.6|>= 4.0.0-RC1, < 4.4.6|>= 4.0.0-RC1, < 4.3.7|>= 4.0.0-RC1, < 4.2.1",
"croogo/croogo": "<3.0.7",
"cuyz/valinor": "<0.12",
"czproject/git-php": "<4.0.3",
"darylldoyle/safe-svg": "<1.9.10",
"datadog/dd-trace": ">=0.30,<0.30.2",
"datatables/datatables": "<1.10.10",
"david-garcia/phpwhois": "<=4.3.1",
"dbrisinajumi/d2files": "<1",
"dcat/laravel-admin": "<=2.1.3.0-beta",
"dcat/laravel-admin": "<=2.1.3-beta",
"derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3",
"derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1",
"desperado/xml-bundle": "<=0.1.7",
"directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2",
"doctrine/annotations": "<1.2.7",
"doctrine/cache": "<1.3.2|>=1.4,<1.4.2",
"doctrine/common": "<2.4.3|>=2.5,<2.5.1",
"directmailteam/direct-mail": "<5.2.4",
"doctrine/annotations": ">=1,<1.2.7",
"doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2",
"doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1",
"doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2|>=3,<3.1.4",
"doctrine/doctrine-bundle": "<1.5.2",
"doctrine/doctrine-module": "<=0.7.1",
"doctrine/mongodb-odm": "<1.0.2",
"doctrine/mongodb-odm-bundle": "<3.0.1",
"doctrine/mongodb-odm": ">=1,<1.0.2",
"doctrine/mongodb-odm-bundle": ">=2,<3.0.1",
"doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4",
"dolibarr/dolibarr": "<18.0.2",
"dompdf/dompdf": "<2.0.4",
"doublethreedigital/guest-entries": "<3.1.2",
"drupal/core": "<9.4.14|>=9.5,<9.5.8|>=10,<10.0.8",
"drupal/drupal": ">=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4",
"duncanmcclean/guest-entries": "<3.1.2",
"dolibarr/dolibarr": "<17.0.1|= 12.0.5|>= 3.3.beta1, < 13.0.2",
"dompdf/dompdf": "<2.0.2|= 2.0.2",
"drupal/core": ">=7,<7.96|>=8,<9.4.14|>=9.5,<9.5.8|>=10,<10.0.8",
"drupal/drupal": ">=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4",
"dweeves/magmi": "<=0.7.24",
"ecodev/newsletter": "<=4",
"ectouch/ectouch": "<=2.7.2",
"elefant/cms": "<2.0.7",
"elefant/cms": "<1.3.13",
"elgg/elgg": "<3.3.24|>=4,<4.0.5",
"elijaa/phpmemcacheadmin": "<=1.3",
"encore/laravel-admin": "<=1.8.19",
"endroid/qr-code-bundle": "<3.4.2",
"enshrined/svg-sanitize": "<0.15",
"erusev/parsedown": "<1.7.2",
"ether/logs": "<3.0.4",
"evolutioncms/evolution": "<=3.2.3",
"exceedone/exment": "<4.4.3|>=5,<5.0.3",
"exceedone/laravel-admin": "<2.2.3|==3",
"ezsystems/demobundle": ">=5.4,<5.4.6.1-dev",
"exceedone/laravel-admin": "= 3.0.0|<2.2.3",
"ezsystems/demobundle": ">=5.4,<5.4.6.1",
"ezsystems/ez-support-tools": ">=2.2,<2.2.3",
"ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1-dev",
"ezsystems/ezfind-ls": ">=5.3,<5.3.6.1-dev|>=5.4,<5.4.11.1-dev|>=2017.12,<2017.12.0.1-dev",
"ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1",
"ezsystems/ezfind-ls": ">=5.3,<5.3.6.1|>=5.4,<5.4.11.1|>=2017.12,<2017.12.0.1",
"ezsystems/ezplatform": "<=1.13.6|>=2,<=2.5.24",
"ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.26",
"ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1",
"ezsystems/ezplatform-graphql": ">=1.0.0.0-RC1-dev,<1.0.13|>=2.0.0.0-beta1,<2.3.12",
"ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.34",
"ezsystems/ezplatform-graphql": ">=1-rc.1,<1.0.13|>=2-beta.1,<2.3.12",
"ezsystems/ezplatform-kernel": "<1.2.5.1|>=1.3,<1.3.26",
"ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8",
"ezsystems/ezplatform-richtext": ">=2.3,<2.3.7.1-dev",
"ezsystems/ezplatform-solr-search-engine": ">=1.7,<1.7.12|>=2,<2.0.2|>=3.3,<3.3.15",
"ezsystems/ezplatform-richtext": ">=2.3,<2.3.7.1",
"ezsystems/ezplatform-user": ">=1,<1.0.1",
"ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.31",
"ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.06,<=2019.03.5.1",
"ezsystems/ezpublish-kernel": "<6.13.8.2|>=7,<7.5.30",
"ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.3.5.1",
"ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3",
"ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15",
"ezsystems/repository-forms": ">=2.3,<2.3.2.1|>=2.5,<2.5.15",
"ezyang/htmlpurifier": "<4.1.1",
"facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2",
"facturascripts/facturascripts": "<=2022.08",
"facturascripts/facturascripts": "<=2022.8",
"feehi/cms": "<=2.1.1",
"feehi/feehicms": "<=2.1.1",
"fenom/fenom": "<=2.12.1",
@@ -1397,16 +1326,13 @@
"firebase/php-jwt": "<6",
"fixpunkt/fp-masterquiz": "<2.2.1|>=3,<3.5.2",
"fixpunkt/fp-newsletter": "<1.1.1|>=2,<2.1.2|>=2.2,<3.2.6",
"flarum/core": "<1.8",
"flarum/framework": "<1.8",
"flarum/core": "<1.7",
"flarum/mentions": "<1.6.3",
"flarum/sticky": ">=0.1.0.0-beta14,<=0.1.0.0-beta15",
"flarum/tags": "<=0.1.0.0-beta13",
"floriangaerber/magnesium": "<0.3.1",
"flarum/sticky": ">=0.1-beta.14,<=0.1-beta.15",
"flarum/tags": "<=0.1-beta.13",
"fluidtypo3/vhs": "<5.1.1",
"fof/byobu": ">=0.3.0.0-beta2,<1.1.7",
"fof/byobu": ">=0.3-beta.2,<1.1.7",
"fof/upload": "<1.2.3",
"foodcoopshop/foodcoopshop": ">=3.2,<3.6.1",
"fooman/tcpdf": "<6.2.22",
"forkcms/forkcms": "<5.11.1",
"fossar/tcpdf-parser": "<6.2.22",
@@ -1416,20 +1342,17 @@
"friendsofsymfony/rest-bundle": ">=1.2,<1.2.2",
"friendsofsymfony/user-bundle": ">=1.2,<1.3.5",
"friendsoftypo3/mediace": ">=7.6.2,<7.6.5",
"friendsoftypo3/openid": ">=4.5,<4.5.31|>=4.7,<4.7.16|>=6,<6.0.11|>=6.1,<6.1.6",
"froala/wysiwyg-editor": "<3.2.7|>=4.0.1,<=4.1.1",
"froxlor/froxlor": "<2.1.0.0-beta1",
"froala/wysiwyg-editor": "<3.2.7",
"froxlor/froxlor": "<2.1",
"fuel/core": "<1.8.1",
"funadmin/funadmin": "<=3.2|>=3.3.2,<=3.3.3",
"gaoming13/wechat-php-sdk": "<=1.10.2",
"genix/cms": "<=1.1.11",
"getgrav/grav": "<=1.7.42.1",
"getkirby/cms": "<3.5.8.3-dev|>=3.6,<3.6.6.3-dev|>=3.7,<3.7.5.2-dev|>=3.8,<3.8.4.1-dev|>=3.9,<3.9.6",
"getkirby/kirby": "<=2.5.12",
"getgrav/grav": "<1.7.42",
"getkirby/cms": "= 3.8.0|<3.5.8.2|>=3.6,<3.6.6.2|>=3.7,<3.7.5.1",
"getkirby/panel": "<2.5.14",
"getkirby/starterkit": "<=3.7.0.2",
"gilacms/gila": "<=1.11.4",
"gleez/cms": "<=1.2|==2",
"globalpayments/php-sdk": "<2",
"gogentooss/samlbase": "<1.2.7",
"google/protobuf": "<3.15",
@@ -1437,12 +1360,11 @@
"gree/jose": "<2.2.1",
"gregwar/rst": "<1.0.3",
"grumpydictator/firefly-iii": "<6",
"gugoan/economizzer": "<=0.9.0.0-beta1",
"guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5",
"guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5",
"haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2",
"harvesthq/chosen": "<1.8.7",
"helloxz/imgurl": "<=2.31",
"helloxz/imgurl": "= 2.31|<=2.31",
"hhxsv5/laravel-s": "<3.7.36",
"hillelcoren/invoice-ninja": "<5.3.35",
"himiklab/yii2-jqgrid-widget": "<1.0.8",
@@ -1451,10 +1373,9 @@
"httpsoft/http-message": "<1.0.12",
"hyn/multi-tenant": ">=5.6,<5.7.2",
"ibexa/admin-ui": ">=4.2,<4.2.3",
"ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3|>=4.5,<4.5.4",
"ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3",
"ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3",
"ibexa/post-install": "<=1.0.4",
"ibexa/solr": ">=4.5,<4.5.4",
"ibexa/user": ">=4,<4.4.3",
"icecoder/icecoder": "<=8.1",
"idno/known": "<=1.3.1",
@@ -1464,25 +1385,21 @@
"illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15",
"illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75",
"impresscms/impresscms": "<=1.4.5",
"in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.2.3",
"in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.1",
"in2code/ipandlanguageredirect": "<5.1.2",
"in2code/lux": "<17.6.1|>=18,<24.0.2",
"innologi/typo3-appointments": "<2.0.6",
"intelliants/subrion": "<4.2.2",
"intelliants/subrion": "<=4.2.1",
"islandora/islandora": ">=2,<2.4.1",
"ivankristianto/phpwhois": "<=4.3",
"jackalope/jackalope-doctrine-dbal": "<1.7.4",
"james-heinrich/getid3": "<1.9.21",
"james-heinrich/phpthumb": "<1.7.12",
"jasig/phpcas": "<1.3.3",
"jcbrand/converse.js": "<3.3.3",
"joomla/application": "<1.0.13",
"joomla/archive": "<1.1.12|>=2,<2.0.1",
"joomla/filesystem": "<1.6.2|>=2,<2.0.1",
"joomla/filter": "<1.4.4|>=2,<2.0.1",
"joomla/framework": ">=2.5.4,<=3.8.12",
"joomla/input": ">=2,<2.0.2",
"joomla/joomla-cms": ">=2.5,<3.9.12",
"joomla/joomla-cms": ">=3,<3.9.12",
"joomla/session": "<1.3.1",
"joyqi/hyper-down": "<=2.4.27",
"jsdecena/laracom": "<2.0.9",
@@ -1491,28 +1408,27 @@
"kelvinmo/simplexrd": "<3.1.1",
"kevinpapst/kimai2": "<1.16.7",
"khodakhah/nodcms": "<=3",
"kimai/kimai": "<=2.1",
"kimai/kimai": "<1.1",
"kitodo/presentation": "<3.2.3|>=3.3,<3.3.4",
"klaviyo/magento2-extension": ">=1,<3",
"knplabs/knp-snappy": "<=1.4.2",
"kohana/core": "<3.3.3",
"knplabs/knp-snappy": "<1.4.2",
"krayin/laravel-crm": "<1.2.2",
"kreait/firebase-php": ">=3.2,<3.8.1",
"la-haute-societe/tcpdf": "<6.2.22",
"laminas/laminas-diactoros": "<2.18.1|==2.19|==2.20|==2.21|==2.22|==2.23|>=2.24,<2.24.2|>=2.25,<2.25.2",
"laminas/laminas-diactoros": "<2.18.1|>=2.24,<2.24.2|>=2.25,<2.25.2|= 2.23.0|= 2.22.0|= 2.21.0|= 2.20.0|= 2.19.0",
"laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1",
"laminas/laminas-http": "<2.14.2",
"laravel/fortify": "<1.11.1",
"laravel/framework": "<6.20.44|>=7,<7.30.6|>=8,<8.75",
"laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10",
"latte/latte": "<2.10.8",
"lavalite/cms": "<=9",
"lavalite/cms": "= 9.0.0|<=9",
"lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5",
"league/commonmark": "<0.18.3",
"league/flysystem": "<1.1.4|>=2,<2.1.1",
"league/oauth2-server": ">=8.3.2,<8.4.2|>=8.5,<8.5.3",
"league/oauth2-server": ">=8.3.2,<8.5.3",
"lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3",
"librenms/librenms": "<2017.08.18",
"librenms/librenms": "<22.10",
"liftkit/database": "<2.13.2",
"limesurvey/limesurvey": "<3.27.19",
"livehelperchat/livehelperchat": "<=3.91",
@@ -1521,84 +1437,68 @@
"localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2",
"luyadev/yii-helpers": "<1.2.1",
"magento/community-edition": "<=2.4",
"magento/magento1ce": "<1.9.4.3-dev",
"magento/magento1ee": ">=1,<1.14.4.3-dev",
"magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2.0-patch2",
"magento/magento1ce": "<1.9.4.3",
"magento/magento1ee": ">=1,<1.14.4.3",
"magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2-p.2",
"maikuolan/phpmussel": ">=1,<1.6",
"mantisbt/mantisbt": "<=2.25.7",
"mantisbt/mantisbt": "<=2.25.5",
"marcwillmann/turn": "<0.3.3",
"matyhtf/framework": "<3.0.6",
"mautic/core": "<4.3",
"mautic/core": "<4.3|= 2.13.1",
"mediawiki/core": ">=1.27,<1.27.6|>=1.29,<1.29.3|>=1.30,<1.30.2|>=1.31,<1.31.9|>=1.32,<1.32.6|>=1.32.99,<1.33.3|>=1.33.99,<1.34.3|>=1.34.99,<1.35",
"mediawiki/matomo": "<2.4.3",
"mediawiki/semantic-media-wiki": "<4.0.2",
"melisplatform/melis-asset-manager": "<5.0.1",
"melisplatform/melis-cms": "<5.0.1",
"melisplatform/melis-front": "<5.0.1",
"mezzio/mezzio-swoole": "<3.7|>=4,<4.3",
"mgallegos/laravel-jqgrid": "<=1.3",
"microsoft/microsoft-graph": ">=1.16,<1.109.1|>=2.0.0.0-RC1-dev,<2.0.1",
"microsoft/microsoft-graph-beta": "<2.0.1",
"microsoft/microsoft-graph-core": "<2.0.2",
"microweber/microweber": "<=2.0.4",
"microweber/microweber": "= 1.1.18|<=1.3.4",
"miniorange/miniorange-saml": "<1.4.3",
"mittwald/typo3_forum": "<1.2.1",
"mobiledetect/mobiledetectlib": "<2.8.32",
"modx/revolution": "<=2.8.3.0-patch",
"modx/revolution": "<= 2.8.3-pl|<2.8",
"mojo42/jirafeau": "<4.4",
"mongodb/mongodb": ">=1,<1.9.2",
"monolog/monolog": ">=1.8,<1.12",
"moodle/moodle": "<4.3.0.0-RC2-dev",
"mos/cimage": "<0.7.19",
"moodle/moodle": "<4.2-rc.2|= 3.7|= 3.9|= 3.8|= 4.2.0|= 3.11",
"movim/moxl": ">=0.8,<=0.10",
"mpdf/mpdf": "<=7.1.7",
"munkireport/comment": "<4.1",
"munkireport/managedinstalls": "<2.6",
"munkireport/munkireport": ">=2.5.3,<5.6.3",
"mustache/mustache": ">=2,<2.14.1",
"namshi/jose": "<2.2",
"neoan3-apps/template": "<1.1.1",
"neorazorx/facturascripts": "<2022.04",
"neorazorx/facturascripts": "<2022.4",
"neos/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6",
"neos/form": ">=1.2,<4.3.3|>=5,<5.0.9|>=5.1,<5.1.3",
"neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.9.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2",
"neos/neos-ui": "<=8.3.3",
"neos/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5",
"netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15",
"nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6",
"nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13",
"nilsteampassnet/teampass": "<3.0.10",
"nonfiction/nterchange": "<4.1.1",
"notrinos/notrinos-erp": "<=0.7",
"noumo/easyii": "<=0.9",
"nukeviet/nukeviet": "<4.5.02",
"nukeviet/nukeviet": "<4.5.2",
"nyholm/psr7": "<1.6.1",
"nystudio107/craft-seomatic": "<3.4.12",
"nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1",
"october/backend": "<1.1.2",
"october/cms": "<1.0.469|==1.0.469|==1.0.471|==1.1.1",
"october/october": "<=3.4.4",
"october/cms": "= 1.1.1|= 1.0.471|= 1.0.469|>=1.0.319,<1.0.469",
"october/october": ">=1.0.319,<1.0.466|>=2.1,<2.1.12",
"october/rain": "<1.0.472|>=1.1,<1.1.2",
"october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.5.2",
"omeka/omeka-s": "<4.0.3",
"october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.0.66",
"onelogin/php-saml": "<2.10.4",
"oneup/uploader-bundle": "<1.9.3|>=2,<2.1.5",
"open-web-analytics/open-web-analytics": "<1.7.4",
"opencart/opencart": "<=3.0.3.7|>=4,<4.0.2.3-dev",
"opencart/opencart": "<=3.0.3.7",
"openid/php-openid": "<2.3",
"openmage/magento-lts": "<20.2",
"openmage/magento-lts": "<19.4.22|>=20,<20.0.19",
"opensource-workshop/connect-cms": "<1.7.2|>=2,<2.3.2",
"orchid/platform": ">=9,<9.4.4|>=14.0.0.0-alpha4,<14.5",
"oro/calendar-bundle": ">=4.2,<=4.2.6|>=5,<=5.0.6|>=5.1,<5.1.1",
"oro/commerce": ">=4.1,<5.0.11|>=5.1,<5.1.1",
"orchid/platform": ">=9,<9.4.4|>=14-alpha.4,<14.5",
"oro/commerce": ">=4.1,<5.0.6",
"oro/crm": ">=1.7,<1.7.4|>=3.1,<4.1.17|>=4.2,<4.2.7",
"oro/crm-call-bundle": ">=4.2,<=4.2.5|>=5,<5.0.4|>=5.1,<5.1.1",
"oro/customer-portal": ">=4.2,<=4.2.8|>=5,<5.0.11|>=5.1,<5.1.1",
"oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<=4.2.10|>=5,<5.0.8",
"oxid-esales/oxideshop-ce": "<4.5",
"oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<4.2.8",
"packbackbooks/lti-1-3-php-library": "<5",
"padraic/humbug_get_contents": "<1.1.2",
"pagarme/pagarme-php": "<3",
"pagarme/pagarme-php": ">=0,<3",
"pagekit/pagekit": "<=1.0.18",
"paragonie/random_compat": "<2",
"passbolt/passbolt_api": "<2.11",
@@ -1609,7 +1509,6 @@
"pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1",
"personnummer/personnummer": "<3.0.2",
"phanan/koel": "<5.1.4",
"phenx/php-svg-lib": "<0.5.1",
"php-mod/curl": "<2.3.2",
"phpbb/phpbb": "<3.2.10|>=3.3,<3.3.1",
"phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7",
@@ -1619,7 +1518,7 @@
"phpmyfaq/phpmyfaq": "<=3.1.7",
"phpoffice/phpexcel": "<1.8",
"phpoffice/phpspreadsheet": "<1.16",
"phpseclib/phpseclib": "<2.0.31|>=3,<3.0.34",
"phpseclib/phpseclib": "<2.0.31|>=3,<3.0.19",
"phpservermon/phpservermon": "<3.6",
"phpsysinfo/phpsysinfo": "<3.2.5",
"phpunit/phpunit": ">=4.8.19,<4.8.28|>=5,<5.6.3",
@@ -1627,48 +1526,39 @@
"phpxmlrpc/extras": "<0.6.1",
"phpxmlrpc/phpxmlrpc": "<4.9.2",
"pi/pi": "<=2.5",
"pimcore/admin-ui-classic-bundle": "<1.2.2",
"pimcore/customer-management-framework-bundle": "<3.4.2",
"pimcore/admin-ui-classic-bundle": "<1.0.3",
"pimcore/customer-management-framework-bundle": "<3.4.1",
"pimcore/data-hub": "<1.2.4",
"pimcore/demo": "<10.3",
"pimcore/perspective-editor": "<1.5.1",
"pimcore/pimcore": "<11.1.1",
"pimcore/pimcore": "<10.5.24",
"pixelfed/pixelfed": "<=0.11.4",
"pocketmine/bedrock-protocol": "<8.0.2",
"pocketmine/pocketmine-mp": "<=4.23|>=5,<5.3.1",
"pocketmine/raklib": ">=0.14,<0.14.6|>=0.15,<0.15.1",
"pocketmine/pocketmine-mp": "<4.22.3|>=5,<5.2.1|< 4.18.0-ALPHA2|>= 4.0.0-BETA5, < 4.4.2",
"pressbooks/pressbooks": "<5.18",
"prestashop/autoupgrade": ">=4,<4.10.1",
"prestashop/blockreassurance": "<=5.1.3",
"prestashop/blockwishlist": ">=2,<2.1.1",
"prestashop/contactform": ">=1.0.1,<4.3",
"prestashop/gamification": "<2.3.2",
"prestashop/prestashop": "<8.1.2",
"prestashop/prestashop": "<8.0.4",
"prestashop/productcomments": "<5.0.2",
"prestashop/ps_emailsubscription": "<2.6.1",
"prestashop/ps_facetedsearch": "<3.4.1",
"prestashop/ps_linklist": "<3.1",
"privatebin/privatebin": "<1.4",
"processwire/processwire": "<=3.0.200",
"propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7",
"propel/propel": ">=2-alpha.1,<=2-alpha.7",
"propel/propel1": ">=1,<=1.7.1",
"pterodactyl/panel": "<1.7",
"ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2",
"ptrofimov/beanstalk_console": "<1.7.14",
"pubnub/pubnub": "<6.1",
"pusher/pusher-php-server": "<2.2.1",
"pwweb/laravel-core": "<=0.3.6.0-beta",
"pwweb/laravel-core": "<=0.3.6-beta",
"pyrocms/pyrocms": "<=3.9.1",
"rainlab/blog-plugin": "<1.4.1",
"rainlab/debugbar-plugin": "<3.1",
"rainlab/user-plugin": "<=1.4.5",
"rankmath/seo-by-rank-math": "<=1.0.95",
"rap2hpoutre/laravel-log-viewer": "<0.13",
"react/http": ">=0.7,<1.9",
"really-simple-plugins/complianz-gdpr": "<6.4.2",
"remdex/livehelperchat": "<3.99",
"reportico-web/reportico": "<=7.1.21",
"rhukster/dom-sanitizer": "<1.0.7",
"rmccue/requests": ">=1.6,<1.8",
"robrichards/xmlseclibs": "<3.0.4",
"roots/soil": "<4.1",
@@ -1677,7 +1567,7 @@
"s-cart/s-cart": "<6.9",
"sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1",
"sabre/dav": "<1.7.11|>=1.8,<1.8.9",
"scheb/two-factor-bundle": "<3.26|>=4,<4.11",
"scheb/two-factor-bundle": ">=0,<3.26|>=4,<4.11",
"sensiolabs/connect": "<4.2.3",
"serluck/phpwhois": "<=4.2.6",
"sfroemken/url_redirect": "<=1.2.1",
@@ -1690,15 +1580,14 @@
"shopxo/shopxo": "<2.2.6",
"showdoc/showdoc": "<2.10.4",
"silverstripe-australia/advancedreports": ">=1,<=2",
"silverstripe/admin": "<1.13.6",
"silverstripe/admin": "<1.12.7",
"silverstripe/assets": ">=1,<1.11.1",
"silverstripe/cms": "<4.11.3",
"silverstripe/comments": ">=1.3,<1.9.99|>=2,<2.9.99|>=3,<3.1.1",
"silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3",
"silverstripe/framework": "<4.13.14|>=5,<5.0.13",
"silverstripe/graphql": "<3.8.2|>=4,<4.1.3|>=4.2,<4.2.5|>=4.3,<4.3.4|>=5,<5.0.3",
"silverstripe/framework": "<4.12.5",
"silverstripe/graphql": "<3.5.2|>=4-alpha.1,<4-alpha.2|>=4.1.1,<4.1.2|>=4.2.2,<4.2.3|= 4.0.0-alpha1",
"silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1",
"silverstripe/recipe-cms": ">=4.5,<4.5.3",
"silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1",
"silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4",
"silverstripe/silverstripe-omnipay": "<2.5.2|>=3,<3.0.2|>=3.1,<3.1.4|>=3.2,<3.2.1",
@@ -1707,38 +1596,36 @@
"silverstripe/userforms": "<3",
"silverstripe/versioned-admin": ">=1,<1.11.1",
"simple-updates/phpwhois": "<=1",
"simplesamlphp/saml2": "<1.15.4|>=2,<2.3.8|>=3,<3.1.4|==5.0.0.0-alpha12",
"simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4",
"simplesamlphp/simplesamlphp": "<1.18.6",
"simplesamlphp/simplesamlphp-module-infocard": "<1.0.1",
"simplesamlphp/simplesamlphp-module-openid": "<1",
"simplesamlphp/simplesamlphp-module-openidprovider": "<0.9",
"simplesamlphp/xml-security": "==1.6.11",
"simplito/elliptic-php": "<1.0.6",
"sitegeist/fluid-components": "<3.5",
"sjbr/sr-freecap": "<2.4.6|>=2.5,<2.5.3",
"sjbr/sr-freecap": "<=2.5.2",
"slim/psr7": "<1.4.1|>=1.5,<1.5.1|>=1.6,<1.6.1",
"slim/slim": "<2.6",
"slub/slub-events": "<3.0.3",
"smarty/smarty": "<3.1.48|>=4,<4.3.1",
"snipe/snipe-it": "<=6.2.2",
"snipe/snipe-it": "<=6.0.14|>= 6.0.0-RC-1, <= 6.0.0-RC-5",
"socalnick/scn-social-auth": "<1.15.2",
"socialiteproviders/steam": "<1.1",
"spatie/browsershot": "<3.57.4",
"spipu/html2pdf": "<5.2.8",
"spipu/html2pdf": "<5.2.4",
"spoon/library": "<1.4.1",
"spoonity/tcpdf": "<6.2.22",
"squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1",
"ssddanbrown/bookstack": "<22.02.3",
"statamic/cms": "<4.36",
"stormpath/sdk": "<9.9.99",
"ssddanbrown/bookstack": "<22.2.3",
"statamic/cms": "<4.10",
"stormpath/sdk": ">=0,<9.9.99",
"studio-42/elfinder": "<2.1.62",
"subhh/libconnect": "<7.0.8|>=8,<8.1",
"subrion/cms": "<=4.2.1",
"sukohi/surpass": "<1",
"sulu/sulu": "<1.6.44|>=2,<2.2.18|>=2.3,<2.3.8|==2.4.0.0-RC1|>=2.5,<2.5.10",
"sulu/sulu": "= 2.4.0-RC1|<1.6.44|>=2,<2.2.18|>=2.3,<2.3.8",
"sumocoders/framework-user-bundle": "<1.4",
"swag/paypal": "<5.4.4",
"swiftmailer/swiftmailer": ">=4,<5.4.5",
"swiftyedit/swiftyedit": "<1.2",
"sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2",
"sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1",
"sylius/grid-bundle": "<1.10.1",
@@ -1754,7 +1641,7 @@
"symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
"symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4",
"symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1",
"symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<=5.3.14|>=5.4.3,<=5.4.3|>=6.0.3,<=6.0.3",
"symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<=5.3.14|>=5.4.3,<=5.4.3|>=6.0.3,<=6.0.3|= 6.0.3|= 5.4.3|= 5.3.14",
"symfony/http-foundation": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7",
"symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6",
"symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13",
@@ -1770,59 +1657,49 @@
"symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.9",
"symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11",
"symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8",
"symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.3.2|>=5.4,<5.4.31|>=6,<6.3.8",
"symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.3.2",
"symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12",
"symfony/symfony": "<4.4.51|>=5,<5.4.31|>=6,<6.3.8",
"symfony/symfony": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6",
"symfony/translation": ">=2,<2.0.17",
"symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8",
"symfony/ux-autocomplete": "<2.11.2",
"symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3",
"symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8",
"symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4",
"symfony/webhook": ">=6.3,<6.3.8",
"symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7",
"symphonycms/symphony-2": "<2.6.4",
"t3/dce": "<0.11.5|>=2.2,<2.6.2",
"t3/dce": ">=2.2,<2.6.2",
"t3g/svg-sanitizer": "<1.0.3",
"t3s/content-consent": "<1.0.3|>=2,<2.0.2",
"tastyigniter/tastyigniter": "<3.3",
"tcg/voyager": "<=1.4",
"tecnickcom/tcpdf": "<6.2.22",
"terminal42/contao-tablelookupwizard": "<3.3.5",
"thelia/backoffice-default-template": ">=2.1,<2.1.2",
"thelia/thelia": ">=2.1,<2.1.3",
"thelia/thelia": ">=2.1-beta.1,<2.1.3",
"theonedemon/phpwhois": "<=4.2.5",
"thinkcmf/thinkcmf": "<=5.1.7",
"thorsten/phpmyfaq": "<3.2.2",
"tikiwiki/tiki-manager": "<=17.1",
"tinymce/tinymce": "<5.10.9|>=6,<6.7.3",
"thorsten/phpmyfaq": "<3.2-beta.2",
"tinymce/tinymce": "<5.10.7|>=6,<6.3.1",
"tinymighty/wiki-seo": "<1.2.2",
"titon/framework": "<9.9.99",
"tobiasbg/tablepress": "<=2.0.0.0-RC1",
"titon/framework": ">=0,<9.9.99",
"tobiasbg/tablepress": "<= 2.0-RC1",
"topthink/framework": "<6.0.14",
"topthink/think": "<=6.1.1",
"topthink/thinkphp": "<=3.2.3",
"tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2",
"tribalsystems/zenario": "<=9.4.59197",
"tribalsystems/zenario": "<=9.3.57595",
"truckersmp/phpwhois": "<=4.3.1",
"ttskch/pagination-service-provider": "<1",
"twig/twig": "<1.44.7|>=2,<2.15.3|>=3,<3.4.3",
"typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2",
"typo3/cms": "<2.0.5|>=3,<3.0.3|>=6.2,<=6.2.38|>=7,<7.6.32|>=8,<8.7.38|>=9,<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2",
"typo3/cms-backend": ">=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
"typo3/cms-core": "<8.7.55|>=9,<9.5.44|>=10,<10.4.41|>=11,<11.5.33|>=12,<12.4.8",
"typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1",
"typo3/cms-core": "<8.7.51|>=9,<9.5.40|>=10,<10.4.36|>=11,<11.5.23|>=12,<12.2",
"typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
"typo3/cms-install": ">=12.2,<12.4.8",
"typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30",
"typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6",
"typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3",
"typo3/html-sanitizer": ">=1,<1.5|>=2,<2.1.1",
"typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3",
"typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1",
"typo3/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5",
"typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10",
"ua-parser/uap-php": "<3.8",
"uasoft-indonesia/badaso": "<=2.9.7",
"unisharp/laravel-filemanager": "<2.6.4",
"unisharp/laravel-filemanager": "<=2.5.1",
"userfrosting/userfrosting": ">=0.3.1,<4.6.3",
"usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2",
"uvdesk/community-skeleton": "<=1.1.1",
@@ -1830,9 +1707,8 @@
"verot/class.upload.php": "<=1.0.3|>=2,<=2.0.4",
"vova07/yii2-fileapi-widget": "<0.1.9",
"vrana/adminer": "<4.8.1",
"waldhacker/hcaptcha": "<2.1.2",
"wallabag/tcpdf": "<6.2.22",
"wallabag/wallabag": "<2.6.7",
"wallabag/wallabag": "<=2.5.4",
"wanglelecc/laracms": "<=1.0.3",
"web-auth/webauthn-framework": ">=3.3,<3.3.4",
"webbuilders-group/silverstripe-kapost-bridge": "<0.4",
@@ -1856,7 +1732,7 @@
"yetiforce/yetiforce-crm": "<=6.4",
"yidashi/yii2cmf": "<=2",
"yii2mod/yii2-cms": "<1.9.2",
"yiisoft/yii": "<1.1.29",
"yiisoft/yii": "<1.1.27",
"yiisoft/yii2": "<2.0.38",
"yiisoft/yii2-bootstrap": "<2.0.4",
"yiisoft/yii2-dev": "<2.0.43",
@@ -1867,9 +1743,9 @@
"yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6",
"yoast-seo-for-typo3/yoast_seo": "<7.2.3",
"yourls/yourls": "<=1.8.2",
"zencart/zencart": "<=1.5.7.0-beta",
"zencart/zencart": "<1.5.8",
"zendesk/zendesk_api_client_php": "<2.2.11",
"zendframework/zend-cache": "<2.4.8|>=2.5,<2.5.3",
"zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3",
"zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2",
"zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2",
"zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5",
@@ -1888,22 +1764,14 @@
"zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6",
"zendframework/zendframework": "<=3",
"zendframework/zendframework1": "<1.12.20",
"zendframework/zendopenid": "<2.0.2",
"zendframework/zendrest": "<2.0.2",
"zendframework/zendservice-amazon": "<2.0.3",
"zendframework/zendservice-api": "<1",
"zendframework/zendservice-audioscrobbler": "<2.0.2",
"zendframework/zendservice-nirvanix": "<2.0.2",
"zendframework/zendservice-slideshare": "<2.0.2",
"zendframework/zendservice-technorati": "<2.0.2",
"zendframework/zendservice-windowsazure": "<2.0.2",
"zendframework/zendxml": "<1.0.1",
"zendframework/zendopenid": ">=2,<2.0.2",
"zendframework/zendxml": ">=1,<1.0.1",
"zenstruck/collection": "<0.2.1",
"zetacomponents/mail": "<1.8.2",
"zf-commons/zfc-user": "<1.2.2",
"zfcampus/zf-apigility-doctrine": "<1.0.3",
"zfcampus/zf-apigility-doctrine": ">=1,<1.0.3",
"zfr/zfr-oauth2-server-module": "<0.1.2",
"zoujingli/thinkadmin": "<=6.1.53"
"zoujingli/thinkadmin": "<6.0.22"
},
"type": "metapackage",
"notification-url": "https://packagist.org/downloads/",
@@ -1940,7 +1808,7 @@
"type": "tidelift"
}
],
"time": "2023-12-15T16:04:17+00:00"
"time": "2023-07-19T22:04:22+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -2908,16 +2776,16 @@
},
{
"name": "theseer/tokenizer",
"version": "1.2.2",
"version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
"reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96"
"reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
"reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
"url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
"reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
"shasum": ""
},
"require": {
@@ -2946,7 +2814,7 @@
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"support": {
"issues": "https://github.com/theseer/tokenizer/issues",
"source": "https://github.com/theseer/tokenizer/tree/1.2.2"
"source": "https://github.com/theseer/tokenizer/tree/1.2.1"
},
"funding": [
{
@@ -2954,7 +2822,7 @@
"type": "github"
}
],
"time": "2023-11-20T00:12:19+00:00"
"time": "2021-07-28T10:34:58+00:00"
}
],
"aliases": [],

View File

@@ -1,5 +1,6 @@
import { randUser } from '../utils/index.js'
import { sampleBoard } from '../utils/sampleBoard'
import moment from '@nextcloud/moment'
const user = randUser()
const boardData = sampleBoard()
@@ -111,7 +112,7 @@ describe('Card', function() {
cy.get('button.icon-folder').should('be.visible')
.click()
cy.get('.file-picker__main').should('be.visible')
cy.get('.file-picker__main [data-filename="welcome.txt"]').should('be.visible')
cy.get('.file-picker__main [data-filename="welcome.txt"]', { timeout: 30000 }).should('be.visible')
.click()
cy.get('.dialog__actions button.button-vue--vue-primary').click()
cy.get('.attachment-list .basename').contains('welcome.txt')
@@ -177,6 +178,126 @@ describe('Card', function() {
cy.get('#app-sidebar-vue')
.find('.ProseMirror h1').contains('Hello world writing more text').should('be.visible')
})
it('Set a due date', function() {
const newCardTitle = 'Card with a due date'
cy.get('.button-vue[aria-label*="Add card"]')
.first().click()
cy.get('.stack__card-add form input#new-stack-input-main')
.type(newCardTitle)
cy.get('.stack__card-add form input[type=submit]')
.first().click()
cy.get(`.card:contains("${newCardTitle}")`).should('be.visible')
cy.get('.card:contains("Card with a due date")').should('be.visible').click()
cy.get('#app-sidebar-vue [data-cy-due-date-actions]').should('be.visible').click()
// Set a due date through shortcut
cy.get('[data-cy-due-date-shortcut="tomorrow"] button').should('be.visible').click()
const tomorrow = moment().add(1, 'days').hour(8).minutes(0).seconds(0)
cy.get('#card-duedate-picker').should('have.value', tomorrow.format('YYYY-MM-DDTHH:mm'))
const now = moment().hour(11).minutes(0).seconds(0).toDate()
cy.clock(now)
cy.log(now)
cy.tick(60_000)
cy.get(`.card:contains("${newCardTitle}")`).find('[data-due-state="Now"]').should('be.visible').should('contain', '21 hours')
// Remove the due date again
cy.get('#app-sidebar-vue [data-cy-due-date-actions]').should('be.visible').click()
// tick needed to show the popover menu
cy.tick(1_000)
cy.get('[data-cy-due-date-remove] button').should('be.visible').click()
cy.get(`.card:contains("${newCardTitle}")`).find('[data-due-state]').should('not.exist')
})
it('Add a label', function() {
const newCardTitle = 'Card with labels'
cy.get('.button-vue[aria-label*="Add card"]')
.first().click()
cy.get('.stack__card-add form input#new-stack-input-main')
.type(newCardTitle)
cy.get('.stack__card-add form input[type=submit]')
.first().click()
cy.get(`.card:contains("${newCardTitle}")`).should('be.visible').click()
cy.get('#app-sidebar-vue [data-test="tag-selector"]').should('be.visible').click()
cy.get('.multiselect__option:contains("Action needed")').should('be.visible').click()
cy.get('[data-test="tag-selector"] .selector-wrapper--icon').click()
cy.get('.multiselect__option:contains("Action needed")').should('not.be.visible')
cy.get('[data-test="tag-selector"] .multiselect__tags .tag:contains("Action needed")')
.should('be.visible')
cy.get(`.card:contains("${newCardTitle}")`).find('.labels li:contains("Action needed")')
.should('be.visible')
cy.get('#app-sidebar-vue [data-test="tag-selector"]').should('be.visible').click()
cy.get('.multiselect__option:contains("Later")').should('be.visible').click()
cy.get('.multiselect__option:contains("Action needed")').should('be.visible').click()
cy.get(`.card:contains("${newCardTitle}")`).find('.labels li:contains("Later")')
.should('be.visible')
cy.get(`.card:contains("${newCardTitle}")`).find('.labels li:contains("Action needed")')
.should('not.exist')
})
})
describe('Card actions', () => {
beforeEach(function() {
cy.login(user)
useModal(false).then(() => {
cy.visit(`/apps/deck/#/board/${boardId}`)
})
})
it('Custom card actions', () => {
const myAction = {
label: 'Test action',
icon: 'icon-user',
callback(card) {
console.log('Called callback', card)
},
}
cy.spy(myAction, 'callback').as('myAction.callback')
cy.window().then(win => {
win.OCA.Deck.registerCardAction(myAction)
})
cy.get('.card:contains("Hello world")').should('be.visible').click()
cy.get('#app-sidebar-vue')
.find('.ProseMirror h1').contains('Hello world').should('be.visible')
cy.get('.app-sidebar-header .action-item__menutoggle').click()
cy.get('.v-popper__popper button:contains("Test action")').click()
cy.get('@myAction.callback')
.should('be.called')
.its('firstCall.args.0')
.as('args')
cy.url().then(url => {
const cardId = url.split('/').pop()
cy.get('@args').should('have.property', 'name', 'Hello world')
cy.get('@args').should('have.property', 'stackname', 'TestList')
cy.get('@args').should('have.property', 'boardname', 'MyTestBoard')
cy.get('@args').its('link').then((url) => {
expect(url.split('/').pop() === cardId).to.be.true
cy.visit(url)
cy.get('#app-sidebar-vue')
.find('.ProseMirror h1').contains('Hello world').should('be.visible')
})
})
})
})
})

View File

@@ -1,4 +1,5 @@
import { randUser } from '../utils/index.js'
import { sampleBoard } from '../utils/sampleBoard'
const user = randUser()
describe('Deck dashboard', function() {
@@ -8,16 +9,18 @@ describe('Deck dashboard', function() {
beforeEach(function() {
cy.login(user)
cy.visit('/apps/deck')
})
it('Can show the right title on the dashboard', function() {
cy.visit('/apps/deck')
cy.get('.board-title h2')
.should('have.length', 1).first()
.should('have.text', 'Upcoming cards')
.should($el => expect($el.text().trim()).to.equal('Upcoming cards'))
})
it('Can see the default "Personal Board" created for user by default', function() {
cy.visit('/apps/deck')
const defaultBoard = 'Personal'
cy.get('.app-navigation-entry-wrapper[icon=icon-deck]')
@@ -26,4 +29,29 @@ describe('Deck dashboard', function() {
.contains(defaultBoard)
.should('be.visible')
})
it('Shows a card with due date on the overview', function() {
cy.createExampleBoard({
user,
board: sampleBoard(),
}).then((board) => {
cy.visit(`/apps/deck/#/board/${board.id}`)
cy.intercept({ method: 'PUT', url: '**/apps/deck/cards/**' }).as('updateCard')
const newCardTitle = 'Hello world'
cy.get(`.card:contains("${newCardTitle}")`).should('be.visible').click()
cy.get('#app-sidebar-vue [data-cy-due-date-actions]').should('be.visible').click()
cy.get('[data-cy-due-date-shortcut="tomorrow"] button').should('be.visible').click()
cy.wait('@updateCard')
cy.get('button[title="Close sidebar"]').click()
cy.get('.app-navigation-entry:contains("Upcoming cards") a').click()
cy.get(`.card:contains("${newCardTitle}")`).should('be.visible')
cy.get('.dashboard-column:contains("Tomorrow")').should('be.visible')
cy.get('.dashboard-column:contains("Tomorrow") .card:contains("Hello world")').should('be.visible')
})
})
})

View File

@@ -80,7 +80,7 @@ An ETag header is returned in order to determine if further child elements have
- Fetch a single card of a board `GET /api/v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}`
- Fetch attachments of a card `GET /api/v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments`
If a `If-None-Match` header is provided and the requested element has not changed a `304` Not Modified response will be returned.
If a `If-None-Match` header is provided and the requested element has not changed a `304` Not Modified response will be returned.
Changes of child elements will propagate to their parents and also cause an update of the ETag which will be useful for determining if a sync is necessary on any client integration side. As an example, if a label is added to a card, the ETag of all related entities (the card, stack and board) will change.
@@ -117,6 +117,7 @@ This API version has become available with **Deck 1.3.0**.
- [GET /boards/import/getSystems - Import a board](#get-boardsimportgetsystems-import-a-board)
- [GET /boards/import/config/system/{schema} - Import a board](#get-boardsimportconfigsystemschema-import-a-board)
- [POST /boards/import - Import a board](#post-boardsimport-import-a-board)
- The `done` property was added to cards
# Endpoints
@@ -587,7 +588,7 @@ The board list endpoint supports setting an `If-Modified-Since` header to limit
#### Response
```json
{
{
"title":"Test",
"description":null,
"stackId":6,
@@ -601,6 +602,7 @@ The board list endpoint supports setting an `If-Modified-Since` header to limit
"owner":"admin",
"order":999,
"archived":false,
"done":null,
"duedate": "2019-12-24T19:29:30+00:00",
"deletedAt":0,
"commentsUnread":0,
@@ -623,22 +625,28 @@ The board list endpoint supports setting an `If-Modified-Since` header to limit
#### Request data
| Parameter | Type | Description |
|-------------|-----------|------------------------------------------------------|
| title | String | The title of the card, maximum length is limited to 255 characters |
| description | String | The markdown description of the card |
| type | String | Type of the card (for later use) use 'plain' for now |
| order | Integer | Order for sorting the stacks |
| duedate | timestamp | The ISO-8601 formatted duedate of the card or null |
| Parameter | Type | Description |
|-------------|-----------------|-----------------------------------------------------------------------------------------------------|
| title | String | The title of the card, maximum length is limited to 255 characters |
| description | String | The markdown description of the card |
| type | String | Type of the card (for later use) use 'plain' for now |
| owner | String | The user that owns the card |
| order | Integer | Order for sorting the stacks |
| duedate | timestamp | The ISO-8601 formatted duedate of the card or null |
| archived | bool | Whether the card is archived or not |
| done | timestamp\|null | The ISO-8601 formatted date when the card is marked as done (optional, null indicates undone state) |
```
{
{
"title": "Test card",
"description": "A card description",
"type": "plain",
"owner": "admin",
"order": 999,
"duedate": "2019-12-24T19:29:30+00:00",
"archived": false,
"done": null,
}
```
@@ -977,7 +985,7 @@ For now only `deck_file` is supported as an attachment type.
### DELETE /boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments/{attachmentId} - Delete an attachment
#### Request parameters
| Parameter | Type | Description |
@@ -1051,12 +1059,12 @@ Make a request to see the json schema of system
# OCS API
The following endpoints are available through the Nextcloud OCS endpoint, which is available at `/ocs/v2.php/apps/deck/api/v1.0/`.
The following endpoints are available through the Nextcloud OCS endpoint, which is available at `/ocs/v2.php/apps/deck/api/v1.0/`.
This has the benefit that both the web UI as well as external integrations can use the same API.
## Config
Deck stores user and app configuration values globally and per board. The GET endpoint allows to fetch the current global configuration while board settings will be exposed through the board element on the regular API endpoints.
Deck stores user and app configuration values globally and per board. The GET endpoint allows to fetch the current global configuration while board settings will be exposed through the board element on the regular API endpoints.
### GET /api/v1.0/config - Fetch app configuration values
@@ -1064,10 +1072,10 @@ Deck stores user and app configuration values globally and per board. The GET en
| Config key | Description |
| --- | --- |
| 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)|
| 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)|
```
{
@@ -1112,7 +1120,7 @@ Deck stores user and app configuration values globally and per board. The GET en
| calendar | Boolean |
| cardDetailsInModal | Boolean |
| cardIdBadge | Boolean |
#### Example request
```
@@ -1186,7 +1194,7 @@ A list of comments will be provided under the `ocs.data` key. If no or no more c
}
```
In case a comment is marked as a reply to another comment object, the parent comment will be added as `replyTo` entry to the response. Only the next parent node is added, nested replies are not exposed directly.
In case a comment is marked as a reply to another comment object, the parent comment will be added as `replyTo` entry to the response. Only the next parent node is added, nested replies are not exposed directly.
```json
[

View File

@@ -12,11 +12,12 @@ Overall, Deck is easy to use. You can create boards, add users, share the Deck,
1. [Create my first board](#1-create-my-first-board)
2. [Create stacks and cards](#2-create-stacks-and-cards)
3. [Handle cards options](#3-handle-cards-options)
4. [Archive old tasks](#4-archive-old-tasks)
5. [Manage your board](#5-manage-your-board)
6. [Import boards](#6-import-boards)
7. [Search](#7-search)
8. [New owner for the deck entities](#8-new-owner-for-the-deck-entities)
4. [Mark task as done](#4-mark-as-done)
5. [Archive old tasks](#5-archive-old-tasks)
6. [Manage your board](#6-manage-your-board)
7. [Import boards](#7-import-boards)
8. [Search](#8-search)
9. [New owner for the deck entities](#9-new-owner-for-the-deck-entities)
### 1. Create my first board
In this example, we're going to create a board and share it with an other nextcloud user.
@@ -25,7 +26,7 @@ In this example, we're going to create a board and share it with an other nextcl
### 2. Create stacks and cards
Stacks are simply columns with list of cards. It can represent a category of tasks or an y step in your projects for example.
Stacks are simply columns with list of cards. It can represent a category of tasks or any step in your projects for example.
**Check this out :**
![Gif for creating columns](resources/gifs/EN_create_columns.gif)
@@ -53,12 +54,18 @@ And even :
![Gif for puting infos on tasks 2](resources/gifs/EN_put_infos_2.gif)
### 4. Archive old tasks
Once finished or obsolete, a task could be archived. The tasks is not deleted, it's just archived, and you can retrieve it later
### 4. Mark as done
Once a task has been completed, you can mark it as done. This will prevent it from becoming overdue and hide it from the upcoming cards.
You can mark it as not done at any time.
![Gif for puting infos on tasks 2](resources/gifs/EN_archive.gif)
![Gif for marking a card as done](resources/gifs/EN_done.gif)
### 5. Manage your board
### 5. Archive old tasks
Once obsolete, a task could be archived. The task is not deleted, it's just archived, and you can retrieve it later
![Gif for archiving a task](resources/gifs/EN_archive.gif)
### 6. Manage your board
You can manage the settings of your Deck once you are inside it, by clicking on the small wheel at the top right.
Once in this menu, you have access to several things:
@@ -72,7 +79,7 @@ The **sharing tab** allows you to add users or even groups to your boards.
**Deleted objects** allows you to return previously deleted stacks or cards.
The **Timeline** allows you to see everything that happened in your boards. Everything!
### 6. Import boards
### 7. Import boards
Importing can be done using the API or the `occ` `deck:import` command.
@@ -138,7 +145,7 @@ Example configuration file:
}
```
### 7. Search
### 8. Search
Deck provides a global search either through the unified search in the Nextcloud header or with the inline search next to the board controls.
This search allows advanced filtering of cards across all board of the logged in user.
@@ -161,7 +168,7 @@ Other text tokens will be used to perform a case-insensitive search on the card
In addition, quotes can be used to pass a query with spaces, e.g. `"Exact match with spaces"` or `title:"My card"`.
### 8. New owner for the deck entities
### 9. New owner for the deck entities
You can transfer ownership of boards, cards, etc to a new user, using `occ` command `deck:transfer-ownership`
```bash

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

View File

@@ -92,6 +92,8 @@ class ActivityManager {
public const SUBJECT_CARD_UPDATE_DUEDATE = 'card_update_duedate';
public const SUBJECT_CARD_UPDATE_ARCHIVE = 'card_update_archive';
public const SUBJECT_CARD_UPDATE_UNARCHIVE = 'card_update_unarchive';
public const SUBJECT_CARD_UPDATE_DONE = 'card_update_done';
public const SUBJECT_CARD_UPDATE_UNDONE = 'card_update_undone';
public const SUBJECT_CARD_UPDATE_STACKID = 'card_update_stackId';
public const SUBJECT_CARD_USER_ASSIGN = 'card_user_assign';
public const SUBJECT_CARD_USER_UNASSIGN = 'card_user_unassign';
@@ -199,6 +201,12 @@ class ActivityManager {
case self::SUBJECT_CARD_UPDATE_UNARCHIVE:
$subject = $ownActivity ? $l->t('You have unarchived card {card} in list {stack} on board {board}') : $l->t('{user} has unarchived card {card} in list {stack} on board {board}');
break;
case self::SUBJECT_CARD_UPDATE_DONE:
$subject = $ownActivity ? $l->t('You have marked the card {card} as done in list {stack} on board {board}') : $l->t('{user} has marked card {card} as done in list {stack} on board {board}');
break;
case self::SUBJECT_CARD_UPDATE_UNDONE:
$subject = $ownActivity ? $l->t('You have marked the card {card} as undone in list {stack} on board {board}') : $l->t('{user} has marked the card {card} as undone in list {stack} on board {board}');
break;
case self::SUBJECT_CARD_UPDATE_DUEDATE:
if (!isset($subjectParams['after'])) {
$subject = $ownActivity ? $l->t('You have removed the due date of card {card}') : $l->t('{user} has removed the due date of card {card}');
@@ -358,6 +366,8 @@ class ActivityManager {
case self::SUBJECT_CARD_DELETE:
case self::SUBJECT_CARD_UPDATE_ARCHIVE:
case self::SUBJECT_CARD_UPDATE_UNARCHIVE:
case self::SUBJECT_CARD_UPDATE_DONE:
case self::SUBJECT_CARD_UPDATE_UNDONE:
case self::SUBJECT_CARD_UPDATE_TITLE:
case self::SUBJECT_CARD_UPDATE_DESCRIPTION:
case self::SUBJECT_CARD_UPDATE_DUEDATE:

View File

@@ -23,9 +23,10 @@
namespace OCA\Deck\Activity;
use OCP\Activity\ActivitySettings;
use OCP\IL10N;
class Setting implements \OCP\Activity\ISetting {
abstract class SettingBase extends ActivitySettings {
/** @var IL10N */
protected $l;
@@ -37,6 +38,14 @@ class Setting implements \OCP\Activity\ISetting {
$this->l = $l;
}
public function getGroupIdentifier() {
return 'deck';
}
public function getGroupName() {
return $this->l->t('Deck');
}
/**
* @return string Lowercase a-z and underscore only identifier
* @since 11.0.0

View File

@@ -0,0 +1,84 @@
<?php
/**
* @copyright Copyright (c) 2018 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/>.
*
*/
namespace OCA\Deck\Activity;
class SettingChanges extends SettingBase {
/**
* @return string Lowercase a-z and underscore only identifier
* @since 11.0.0
*/
public function getIdentifier(): string {
return 'deck';
}
/**
* @return string A translated string
* @since 11.0.0
*/
public function getName(): string {
return $this->l->t('A <strong>board, list or card</strong> was changed');
}
/**
* @return int whether the filter should be rather on the top or bottom of
* the admin section. The filters are arranged in ascending order of the
* priority values. It is required to return a value between 0 and 100.
* @since 11.0.0
*/
public function getPriority(): int {
return 90;
}
/**
* @return bool True when the option can be changed for the stream
* @since 11.0.0
*/
public function canChangeStream(): bool {
return true;
}
/**
* @return bool True when the option can be changed for the stream
* @since 11.0.0
*/
public function isDefaultEnabledStream(): bool {
return true;
}
/**
* @return bool True when the option can be changed for the mail
* @since 11.0.0
*/
public function canChangeMail(): bool {
return true;
}
/**
* @return bool True when the option can be changed for the stream
* @since 11.0.0
*/
public function isDefaultEnabledMail(): bool {
return false;
}
}

View File

@@ -23,7 +23,7 @@
namespace OCA\Deck\Activity;
class SettingComment extends Setting {
class SettingComment extends SettingBase {
/**
* @return string Lowercase a-z and underscore only identifier

View File

@@ -23,7 +23,7 @@
namespace OCA\Deck\Activity;
class DescriptionSetting extends Setting {
class SettingDescription extends SettingBase {
/**
* @return string Lowercase a-z and underscore only identifier
@@ -38,6 +38,6 @@ class DescriptionSetting extends Setting {
* @since 11.0.0
*/
public function getName(): string {
return $this->l->t('A <strong>card description</strong> inside the Deck app has been changed');
return $this->l->t('A <strong>card description</strong> has been changed');
}
}

View File

@@ -30,7 +30,9 @@ 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\Dashboard\DeckWidgetToday;
use OCA\Deck\Dashboard\DeckWidgetTomorrow;
use OCA\Deck\Dashboard\DeckWidgetUpcoming;
use OCA\Deck\Db\Acl;
use OCA\Deck\Db\CardMapper;
use OCA\Deck\Event\AclCreatedEvent;
@@ -135,7 +137,9 @@ class Application extends App implements IBootstrap {
$context->registerSearchProvider(DeckProvider::class);
$context->registerSearchProvider(CardCommentProvider::class);
$context->registerDashboardWidget(DeckWidget::class);
$context->registerDashboardWidget(DeckWidgetUpcoming::class);
$context->registerDashboardWidget(DeckWidgetToday::class);
$context->registerDashboardWidget(DeckWidgetTomorrow::class);
$context->registerReferenceProvider(CreateCardReferenceProvider::class);

View File

@@ -43,7 +43,7 @@ class Capabilities implements ICapability {
/**
* Function an app uses to return the capabilities
*
* @return array Array containing the apps capabilities
* @return array{deck: array{version: string, canCreateBoards: bool, apiVersions: array<string>}}
* @since 8.2.0
*/
public function getCapabilities() {

View File

@@ -29,11 +29,12 @@ use OCP\AppFramework\Http\DataResponse;
use OCP\IRequest;
class AttachmentApiController extends ApiController {
private $attachmentService;
public function __construct($appName, IRequest $request, AttachmentService $attachmentService) {
public function __construct(
$appName,
IRequest $request,
private AttachmentService $attachmentService,
) {
parent::__construct($appName, $request);
$this->attachmentService = $attachmentService;
}
/**

View File

@@ -28,13 +28,12 @@ use OCP\AppFramework\Controller;
use OCP\IRequest;
class AttachmentController extends Controller {
/** @var AttachmentService */
private $attachmentService;
public function __construct($appName, IRequest $request, AttachmentService $attachmentService) {
public function __construct(
$appName,
IRequest $request,
private AttachmentService $attachmentService,
) {
parent::__construct($appName, $request);
$this->attachmentService = $attachmentService;
}
/**

View File

@@ -40,18 +40,16 @@ use Sabre\HTTP\Util;
* @package OCA\Deck\Controller
*/
class BoardApiController extends ApiController {
private $boardService;
/**
* @param string $appName
* @param IRequest $request
* @param BoardService $service
* @param $userId
*/
public function __construct($appName, IRequest $request, BoardService $service, $userId) {
public function __construct(
$appName,
IRequest $request,
private BoardService $boardService,
private $userId,
) {
parent::__construct($appName, $request);
$this->boardService = $service;
$this->userId = $userId;
}
/**

View File

@@ -33,15 +33,14 @@ use OCP\AppFramework\Http\DataResponse;
use OCP\IRequest;
class BoardController extends ApiController {
private $userId;
private $boardService;
private $permissionService;
public function __construct($appName, IRequest $request, BoardService $boardService, PermissionService $permissionService, $userId) {
public function __construct(
$appName,
IRequest $request,
private BoardService $boardService,
private PermissionService $permissionService,
private $userId,
) {
parent::__construct($appName, $request);
$this->userId = $userId;
$this->boardService = $boardService;
$this->permissionService = $permissionService;
}
/**
@@ -144,7 +143,7 @@ class BoardController extends ApiController {
/**
* @NoAdminRequired
* @param $aclId
* @return \OCP\AppFramework\Db\Entity
* @return \OCP\AppFramework\Db\Entity|null
*/
public function deleteAcl($aclId) {
return $this->boardService->deleteAcl($aclId);

View File

@@ -30,20 +30,13 @@ use OCP\AppFramework\OCSController;
use OCP\IRequest;
class BoardImportApiController extends OCSController {
/** @var BoardImportService */
private $boardImportService;
/** @var string */
private $userId;
public function __construct(
string $appName,
IRequest $request,
BoardImportService $boardImportService,
string $userId
private BoardImportService $boardImportService,
private string $userId,
) {
parent::__construct($appName, $request);
$this->boardImportService = $boardImportService;
$this->userId = $userId;
}
/**

View File

@@ -25,6 +25,7 @@
namespace OCA\Deck\Controller;
use OCA\Deck\Model\OptionalNullableValue;
use OCA\Deck\Service\AssignmentService;
use OCA\Deck\Service\CardService;
use OCP\AppFramework\ApiController;
@@ -38,21 +39,22 @@ use OCP\IRequest;
* @package OCA\Deck\Controller
*/
class CardApiController extends ApiController {
private $cardService;
private $userId;
private $assignmentService;
/**
* @param string $appName
* @param IRequest $request
* @param CardService $cardService
* @param AssignmentService $assignmentService
* @param $userId
*/
public function __construct($appName, IRequest $request, CardService $cardService, AssignmentService $assignmentService, $userId) {
public function __construct(
string $appName,
IRequest $request,
private CardService $cardService,
private AssignmentService $assignmentService,
private $userId,
) {
parent::__construct($appName, $request);
$this->cardService = $cardService;
$this->userId = $userId;
$this->assignmentService = $assignmentService;
}
/**
@@ -104,7 +106,8 @@ class CardApiController extends ApiController {
* Update a card
*/
public function update($title, $type, $owner, $description = '', $order = 0, $duedate = null, $archived = null) {
$card = $this->cardService->update($this->request->getParam('cardId'), $title, $this->request->getParam('stackId'), $type, $owner, $description, $order, $duedate, 0, $archived);
$done = array_key_exists('done', $this->request->getParams()) ? new OptionalNullableValue($this->request->getParam('done', null)) : null;
$card = $this->cardService->update($this->request->getParam('cardId'), $title, $this->request->getParam('stackId'), $type, $owner, $description, $order, $duedate, 0, $archived, $done);
return new DataResponse($card, HTTP::STATUS_OK);
}

View File

@@ -29,15 +29,14 @@ use OCP\AppFramework\Controller;
use OCP\IRequest;
class CardController extends Controller {
private $userId;
private $cardService;
private $assignmentService;
public function __construct($appName, IRequest $request, CardService $cardService, AssignmentService $assignmentService, $userId) {
public function __construct(
$appName,
IRequest $request,
private CardService $cardService,
private AssignmentService $assignmentService,
private $userId,
) {
parent::__construct($appName, $request);
$this->userId = $userId;
$this->cardService = $cardService;
$this->assignmentService = $assignmentService;
}
/**
@@ -144,6 +143,24 @@ class CardController extends Controller {
return $this->cardService->unarchive($cardId);
}
/**
* @NoAdminRequired
* @param $cardId
* @return \OCP\AppFramework\Db\Entity
*/
public function done(int $cardId) {
return $this->cardService->done($cardId);
}
/**
* @NoAdminRequired
* @param $cardId
* @return \OCP\AppFramework\Db\Entity
*/
public function undone(int $cardId) {
return $this->cardService->undone($cardId);
}
/**
* @NoAdminRequired
* @param $cardId

View File

@@ -31,18 +31,15 @@ use OCP\AppFramework\OCSController;
use OCP\IRequest;
class CommentsApiController extends OCSController {
/** @var CommentService */
private $commentService;
public function __construct(
string $appName,
IRequest $request,
CommentService $commentService,
string $corsMethods = 'PUT, POST, GET, DELETE, PATCH', string $corsAllowedHeaders = 'Authorization, Content-Type, Accept', int $corsMaxAge = 1728000
private CommentService $commentService,
string $corsMethods = 'PUT, POST, GET, DELETE, PATCH',
string $corsAllowedHeaders = 'Authorization, Content-Type, Accept',
int $corsMaxAge = 1728000,
) {
parent::__construct($appName, $request, $corsMethods, $corsAllowedHeaders, $corsMaxAge);
$this->commentService = $commentService;
}
/**

View File

@@ -30,16 +30,12 @@ use OCP\AppFramework\OCSController;
use OCP\IRequest;
class ConfigController extends OCSController {
private $configService;
public function __construct(
$AppName,
IRequest $request,
ConfigService $configService
private ConfigService $configService,
) {
parent::__construct($AppName, $request);
$this->configService = $configService;
}
/**

View File

@@ -35,21 +35,18 @@ use OCP\IRequest;
* @package OCA\Deck\Controller
*/
class LabelApiController extends ApiController {
private $labelService;
private $userId;
/**
* @param string $appName
* @param IRequest $request
* @param LabelService $labelService
* @param $userId
*/
public function __construct($appName, IRequest $request, LabelService $labelService, $userId) {
public function __construct(
$appName,
IRequest $request,
private LabelService $labelService,
private $userId,
) {
parent::__construct($appName, $request);
$this->labelService = $labelService;
$this->userId = $userId;
}
/**
* @NoAdminRequired
* @CORS

View File

@@ -28,11 +28,12 @@ use OCP\AppFramework\Controller;
use OCP\IRequest;
class LabelController extends Controller {
private $labelService;
public function __construct($appName, IRequest $request, LabelService $labelService) {
public function __construct(
$appName,
IRequest $request,
private LabelService $labelService,
) {
parent::__construct($appName, $request);
$this->labelService = $labelService;
}
/**

View File

@@ -32,17 +32,13 @@ use OCP\AppFramework\OCSController;
use OCP\IRequest;
class OverviewApiController extends OCSController {
/** @var OverviewService */
private $dashboardService;
/** @var string */
private $userId;
public function __construct($appName, IRequest $request, OverviewService $dashboardService, $userId) {
public function __construct(
$appName,
IRequest $request,
private OverviewService $dashboardService,
private $userId,
) {
parent::__construct($appName, $request);
$this->dashboardService = $dashboardService;
$this->userId = $userId;
}
/**

View File

@@ -24,9 +24,9 @@
namespace OCA\Deck\Controller;
use \OCP\AppFramework\Http\RedirectResponse;
use OCA\Deck\AppInfo\Application;
use OCA\Deck\Db\Acl;
use OCA\Deck\Db\CardMapper;
use OCA\Deck\Service\BoardService;
use OCA\Deck\Service\CardService;
use OCA\Deck\Service\ConfigService;
use OCA\Deck\Service\PermissionService;
@@ -34,60 +34,42 @@ use OCA\Files\Event\LoadSidebar;
use OCA\Text\Event\LoadEditor;
use OCA\Viewer\Event\LoadViewer;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
use OCP\AppFramework\Http\ContentSecurityPolicy;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Services\IInitialState;
use OCP\Collaboration\Resources\LoadAdditionalScriptsEvent as CollaborationResourcesEvent;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IConfig;
use OCP\IInitialStateService;
use OCP\IRequest;
use OCP\IURLGenerator;
class PageController extends Controller {
private PermissionService $permissionService;
private IInitialStateService $initialState;
private ConfigService $configService;
private IEventDispatcher $eventDispatcher;
private CardMapper $cardMapper;
private IURLGenerator $urlGenerator;
private CardService $cardService;
private IConfig $config;
public function __construct(
string $AppName,
IRequest $request,
PermissionService $permissionService,
IInitialStateService $initialStateService,
ConfigService $configService,
IEventDispatcher $eventDispatcher,
CardMapper $cardMapper,
IURLGenerator $urlGenerator,
CardService $cardService,
IConfig $config
private PermissionService $permissionService,
private IInitialState $initialState,
private BoardService $boardService,
private ConfigService $configService,
private IEventDispatcher $eventDispatcher,
private CardMapper $cardMapper,
private IURLGenerator $urlGenerator,
private CardService $cardService,
private IConfig $config,
) {
parent::__construct($AppName, $request);
$this->permissionService = $permissionService;
$this->initialState = $initialStateService;
$this->configService = $configService;
$this->eventDispatcher = $eventDispatcher;
$this->cardMapper = $cardMapper;
$this->urlGenerator = $urlGenerator;
$this->cardService = $cardService;
$this->config = $config;
}
/**
* Handle main html view from templates/main.php
* This will return the main angular application
*
* @NoAdminRequired
* @NoCSRFRequired
*/
public function index() {
$this->initialState->provideInitialState(Application::APP_ID, 'maxUploadSize', (int)\OCP\Util::uploadLimit());
$this->initialState->provideInitialState(Application::APP_ID, 'canCreate', $this->permissionService->canCreate());
$this->initialState->provideInitialState(Application::APP_ID, 'config', $this->configService->getAll());
#[NoAdminRequired]
#[NoCSRFRequired]
public function index(): TemplateResponse {
$this->initialState->provideInitialState('maxUploadSize', (int)\OCP\Util::uploadLimit());
$this->initialState->provideInitialState('canCreate', $this->permissionService->canCreate());
$this->initialState->provideInitialState('config', $this->configService->getAll());
$this->initialState->provideInitialState('initialBoards', $this->boardService->findAll());
$this->eventDispatcher->dispatchTyped(new LoadSidebar());
$this->eventDispatcher->dispatchTyped(new CollaborationResourcesEvent());
@@ -113,10 +95,32 @@ class PageController extends Controller {
return $response;
}
/**
* @NoAdminRequired
* @NoCSRFRequired
*/
#[NoAdminRequired]
#[NoCSRFRequired]
public function indexList(): TemplateResponse {
return $this->index();
}
#[NoAdminRequired]
#[NoCSRFRequired]
public function indexBoard(int $boardId): TemplateResponse {
return $this->index();
}
#[NoAdminRequired]
#[NoCSRFRequired]
public function indexBoardDetails(int $boardId): TemplateResponse {
return $this->index();
}
#[NoAdminRequired]
#[NoCSRFRequired]
public function indexCard(int $cardId): TemplateResponse {
return $this->index();
}
#[NoAdminRequired]
#[NoCSRFRequired]
public function redirectToCard($cardId): RedirectResponse {
try {
$this->permissionService->checkPermission($this->cardMapper, $cardId, Acl::PERMISSION_READ);

View File

@@ -34,15 +34,12 @@ use OCP\AppFramework\OCSController;
use OCP\IRequest;
class SearchController extends OCSController {
/**
* @var SearchService
*/
private $searchService;
public function __construct(string $appName, IRequest $request, SearchService $searchService) {
public function __construct(
string $appName,
IRequest $request,
private SearchService $searchService,
) {
parent::__construct($appName, $request);
$this->searchService = $searchService;
}
/**

View File

@@ -29,30 +29,23 @@ use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Service\PermissionService;
use OCA\Deck\Service\SessionService;
use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\OCSController;
use OCP\IRequest;
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
private SessionService $sessionService,
private PermissionService $permissionService,
private BoardMapper $boardMapper,
) {
parent::__construct($appName, $request);
$this->sessionService = $sessionService;
$this->permissionService = $permissionService;
$this->boardMapper = $boardMapper;
}
/**
* @NoAdminRequired
*/
#[NoAdminRequired]
public function create(int $boardId): DataResponse {
$this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_READ);
@@ -62,11 +55,7 @@ class SessionController extends OCSController {
]);
}
/**
* notifies the server that the session is still active
* @NoAdminRequired
* @param $boardId
*/
#[NoAdminRequired]
public function sync(int $boardId, string $token): DataResponse {
$this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_READ);
try {
@@ -77,13 +66,12 @@ class SessionController extends OCSController {
}
}
/**
* delete a session if existing
* @NoAdminRequired
* @NoCSRFRequired
* @param $boardId
*/
public function close(int $boardId, string $token) {
#[NoAdminRequired]
#[NoCSRFRequired]
public function close(int $boardId, string $token = null): DataResponse {
if ($token === null) {
return new DataResponse();
}
$this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_READ);
$this->sessionService->closeSession($boardId, $token);
return new DataResponse();

View File

@@ -39,18 +39,16 @@ use Sabre\HTTP\Util;
* @package OCA\Deck\Controller
*/
class StackApiController extends ApiController {
private $boardService;
private $stackService;
/**
* @param string $appName
* @param IRequest $request
* @param StackService $stackService
*/
public function __construct($appName, IRequest $request, StackService $stackService, BoardService $boardService) {
public function __construct(
$appName,
IRequest $request,
private StackService $stackService,
private BoardService $boardService,
) {
parent::__construct($appName, $request);
$this->stackService = $stackService;
$this->boardService = $boardService;
}
/**

View File

@@ -30,12 +30,13 @@ use OCP\AppFramework\Controller;
use OCP\IRequest;
class StackController extends Controller {
private $userId;
private $stackService;
public function __construct($appName, IRequest $request, StackService $stackService, $userId) {
public function __construct(
string $appName,
IRequest $request,
private StackService $stackService,
private $userId,
) {
parent::__construct($appName, $request);
$this->userId = $userId;
$this->stackService = $stackService;
}
/**

View File

@@ -0,0 +1,85 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2020 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/>.
*
*/
namespace OCA\Deck\Dashboard;
use OCP\Dashboard\IWidget;
use OCP\IL10N;
class DeckWidgetToday implements IWidget {
/**
*
* @var IL10N
*/
private $l10n;
public function __construct(IL10N $l10n) {
$this->l10n = $l10n;
}
/**
* @inheritDoc
*/
public function getId(): string {
return 'deckToday';
}
/**
* @inheritDoc
*/
public function getTitle(): string {
return $this->l10n->t('Cards due today');
}
/**
* @inheritDoc
*/
public function getOrder(): int {
return 20;
}
/**
* @inheritDoc
*/
public function getIconClass(): string {
return 'icon-deck';
}
/**
* @inheritDoc
*/
public function getUrl(): ?string {
return null;
}
/**
* @inheritDoc
*/
public function load(): void {
\OCP\Util::addScript('deck', 'deck-dashboard');
}
}

View File

@@ -0,0 +1,85 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2020 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/>.
*
*/
namespace OCA\Deck\Dashboard;
use OCP\Dashboard\IWidget;
use OCP\IL10N;
class DeckWidgetTomorrow implements IWidget {
/**
*
* @var IL10N
*/
private $l10n;
public function __construct(IL10N $l10n) {
$this->l10n = $l10n;
}
/**
* @inheritDoc
*/
public function getId(): string {
return 'deckTomorrow';
}
/**
* @inheritDoc
*/
public function getTitle(): string {
return $this->l10n->t('Cards due tomorrow');
}
/**
* @inheritDoc
*/
public function getOrder(): int {
return 20;
}
/**
* @inheritDoc
*/
public function getIconClass(): string {
return 'icon-deck';
}
/**
* @inheritDoc
*/
public function getUrl(): ?string {
return null;
}
/**
* @inheritDoc
*/
public function load(): void {
\OCP\Util::addScript('deck', 'deck-dashboard');
}
}

View File

@@ -40,7 +40,7 @@ use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\Util;
class DeckWidget implements IAPIWidget, IButtonWidget, IIconWidget {
class DeckWidgetUpcoming implements IAPIWidget, IButtonWidget, IIconWidget {
private IL10N $l10n;
private OverviewService $dashboardService;
private IURLGenerator $urlGenerator;

View File

@@ -1,4 +1,7 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>
*
@@ -39,6 +42,8 @@ use Sabre\VObject\Component\VCalendar;
* @method int getDeletedAt()
* @method void setDeletedAt(int $deletedAt)
* @method bool getNotified()
* @method ?DateTime getDone()
* @method void setDone(?DateTime $done)
*
* @method void setLabels(Label[] $labels)
* @method null|Label[] getLabels()
@@ -85,6 +90,7 @@ class Card extends RelationalEntity {
protected $owner;
protected $order;
protected $archived = false;
protected $done = null;
protected $duedate;
protected $notified = false;
protected $deletedAt = 0;
@@ -108,6 +114,7 @@ class Card extends RelationalEntity {
$this->addType('lastModified', 'integer');
$this->addType('createdAt', 'integer');
$this->addType('archived', 'boolean');
$this->addType('done', 'datetime');
$this->addType('notified', 'boolean');
$this->addType('deletedAt', 'integer');
$this->addType('duedate', 'datetime');
@@ -141,19 +148,22 @@ class Card extends RelationalEntity {
$event->add('RELATED-TO', 'deck-stack-' . $this->getStackId());
// FIXME: For write support: CANCELLED / IN-PROCESS handling
$event->STATUS = $this->getArchived() ? "COMPLETED" : "NEEDS-ACTION";
if ($this->getArchived()) {
if ($this->getDone() || $this->getArchived()) {
$date = new DateTime();
$date->setTimestamp($this->getLastModified());
$event->COMPLETED = $date;
//$event->add('PERCENT-COMPLETE', 100);
}
if (count($this->getLabels()) > 0) {
$event->CATEGORIES = array_map(function ($label) {
return $label->getTitle();
}, $this->getLabels());
$event->STATUS = 'COMPLETED';
$event->COMPLETED = $this->getDone() ? $this->getDone() : $this->getArchived();
} else {
$event->STATUS = 'NEEDS-ACTION';
}
// $event->add('PERCENT-COMPLETE', 100);
$labels = $this->getLabels() ?? [];
$event->CATEGORIES = array_map(function ($label): string {
return $label->getTitle();
}, $labels);
$event->SUMMARY = $this->getTitle();
$event->DESCRIPTION = $this->getDescription();
$calendar->add($event);
@@ -179,7 +189,7 @@ class Card extends RelationalEntity {
return 'card';
}
public function getETag() {
public function getETag(): string {
return md5((string)$this->getLastModified());
}
}

View File

@@ -263,6 +263,7 @@ class CardMapper extends QBMapper implements IPermissionMapper {
->where($qb->expr()->in('s.board_id', $qb->createNamedParameter($boardIds, IQueryBuilder::PARAM_INT_ARRAY)))
->andWhere($qb->expr()->isNotNull('c.duedate'))
->andWhere($qb->expr()->eq('c.archived', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL)))
->andWhere($qb->expr()->isNull('done'))
->andWhere($qb->expr()->eq('c.deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT)))
->andWhere($qb->expr()->eq('s.deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT)))
->andWhere($qb->expr()->eq('b.archived', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL)))
@@ -284,6 +285,7 @@ class CardMapper extends QBMapper implements IPermissionMapper {
)
// Filter out archived/deleted cards and board
->andWhere($qb->expr()->eq('c.archived', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL)))
->andWhere($qb->expr()->isNull('done'))
->andWhere($qb->expr()->eq('c.deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT)))
->andWhere($qb->expr()->eq('s.deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT)))
->andWhere($qb->expr()->eq('b.archived', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL)))
@@ -298,6 +300,7 @@ class CardMapper extends QBMapper implements IPermissionMapper {
->where($qb->expr()->lt('duedate', $qb->createFunction('NOW()')))
->andWhere($qb->expr()->eq('notified', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL)))
->andWhere($qb->expr()->eq('archived', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL)))
->andWhere($qb->expr()->isNull('done'))
->andWhere($qb->expr()->eq('deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT)));
return $this->findEntities($qb);
}

View File

@@ -37,7 +37,7 @@ class User extends RelationalObject {
public function getObjectSerialization() {
return [
'uid' => $this->getObject()->getUID(),
'displayname' => $this->getObject()->getDisplayName(),
'displayname' => $this->getDisplayName(),
'type' => Acl::PERMISSION_TYPE_USER
];
}

View File

@@ -0,0 +1,61 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2023 Thanos kamber <thanos.kamber@gmail.com>
*
* @author Thanos kamber <thanos.kamber@gmail.com>
*
* @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\Migration;
use Closure;
use OCP\DB\ISchemaWrapper;
use OCP\DB\Types;
use OCP\Migration\IOutput;
use OCP\Migration\SimpleMigrationStep;
/**
* Auto-generated migration step: Please modify to your needs!
*/
class Version1011Date20230901010840 extends SimpleMigrationStep {
/**
* @param IOutput $output
* @param Closure $schemaClosure
* @param array $options
* @return null|ISchemaWrapper
*/
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
$table = $schema->getTable('deck_cards');
if (!$table->hasColumn('done')) {
$table->addColumn('done', Types::DATETIME, [
'default' => null,
'notnull' => false,
]);
return $schema;
}
return null;
}
}

View File

@@ -32,6 +32,7 @@ use OCP\Migration\IOutput;
use OCP\Migration\SimpleMigrationStep;
class Version1011Date20231106160059 extends SimpleMigrationStep {
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
$schema = $schemaClosure();

View File

@@ -0,0 +1,51 @@
<?php
/**
* @copyright Copyright (c) 2023 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/>.
*/
namespace OCA\Deck\Model;
/**
* This is a helper abstraction to allow usage of optional parameters
* which hold a nullable value. The actual null value of the parameter
* is used to indicate if it has been set or not. The containing value
* will then still allow having null as a value
*
* Example use case: Have a nullable database column,
* but only update it if it is passed
*
* @template T
*/
class OptionalNullableValue {
/** @var ?T */
private mixed $value;
/** @param ?T $value */
public function __construct(mixed $value) {
$this->value = $value;
}
/** @return ?T */
public function getValue(): mixed {
return $this->value;
}
}

View File

@@ -55,8 +55,8 @@ class BoardReferenceProvider implements IReferenceProvider {
$startIndex = $this->urlGenerator->getAbsoluteURL('/index.php/apps/' . Application::APP_ID);
// link example: https://nextcloud.local/index.php/apps/deck/#/board/2
$noIndexMatch = preg_match('/^' . preg_quote($start, '/') . '\/#\/board\/[0-9]+$/', $referenceText) === 1;
$indexMatch = preg_match('/^' . preg_quote($startIndex, '/') . '\/#\/board\/[0-9]+$/', $referenceText) === 1;
$noIndexMatch = preg_match('/^' . preg_quote($start, '/') . '(?:\/#!?)?\/board\/[0-9]+$/', $referenceText) === 1;
$indexMatch = preg_match('/^' . preg_quote($startIndex, '/') . '(?:\/#!?)?\/board\/[0-9]+$/', $referenceText) === 1;
return $noIndexMatch || $indexMatch;
}
@@ -108,9 +108,9 @@ class BoardReferenceProvider implements IReferenceProvider {
$start = $this->urlGenerator->getAbsoluteURL('/apps/' . Application::APP_ID);
$startIndex = $this->urlGenerator->getAbsoluteURL('/index.php/apps/' . Application::APP_ID);
preg_match('/^' . preg_quote($start, '/') . '\/#\/board\/([0-9]+)$/', $url, $matches);
preg_match('/^' . preg_quote($start, '/') . '(?:\/#!?)?\/board\/([0-9]+)$/', $url, $matches);
if (!$matches) {
preg_match('/^' . preg_quote($startIndex, '/') . '\/#\/board\/([0-9]+)$/', $url, $matches);
preg_match('/^' . preg_quote($startIndex, '/') . '(?:\/#!?)?\/board\/([0-9]+)$/', $url, $matches);
}
if ($matches && count($matches) > 1) {
return (int) $matches[1];

View File

@@ -108,8 +108,8 @@ class CardReferenceProvider extends ADiscoverableReferenceProvider implements IS
$startIndex = $this->urlGenerator->getAbsoluteURL('/index.php/apps/' . Application::APP_ID);
// link example: https://nextcloud.local/index.php/apps/deck/#/board/2/card/11
$noIndexMatchFull = preg_match('/^' . preg_quote($start, '/') . '\/#\/board\/[0-9]+\/card\/[0-9]+$/', $referenceText) === 1;
$indexMatchFull = preg_match('/^' . preg_quote($startIndex, '/') . '\/#\/board\/[0-9]+\/card\/[0-9]+$/', $referenceText) === 1;
$noIndexMatchFull = preg_match('/^' . preg_quote($start, '/') . '(?:\/#!?)?\/board\/[0-9]+\/card\/[0-9]+$/', $referenceText) === 1;
$indexMatchFull = preg_match('/^' . preg_quote($startIndex, '/') . '(?:\/#!?)?\/board\/[0-9]+\/card\/[0-9]+$/', $referenceText) === 1;
// link example: https://nextcloud.local/index.php/apps/deck/card/11
$noIndexMatch = preg_match('/^' . preg_quote($start, '/') . '\/card\/[0-9]+$/', $referenceText) === 1;
@@ -125,16 +125,17 @@ class CardReferenceProvider extends ADiscoverableReferenceProvider implements IS
if ($this->matchReference($referenceText)) {
$ids = $this->getBoardCardId($referenceText);
if ($ids !== null) {
[$boardId, $cardId] = $ids;
[, $cardId] = $ids;
try {
$card = $this->cardService->find((int) $cardId)->jsonSerialize();
$stack = $this->stackService->find((int) $card['stackId'])->jsonSerialize();
$board = $this->boardService->find((int)($boardId ?? $stack['boardId']))->jsonSerialize();
$board = $this->boardService->find((int) $stack['boardId'])->jsonSerialize();
} catch (NoPermissionException $e) {
// Skip throwing if user has no permissions
return null;
}
$boardId = $board['id'];
$card = $this->sanitizeSerializedCard($card);
$board = $this->sanitizeSerializedBoard($board);
@@ -159,14 +160,14 @@ class CardReferenceProvider extends ADiscoverableReferenceProvider implements IS
$result = $cardDetails->jsonSerialize();
unset($result['assignedUsers']);
return $result;
}, $stack['cards']);
}, $stack['cards'] ?? []);
return $stack;
}
private function sanitizeSerializedBoard(array $board): array {
unset($board['labels']);
$board['owner'] = $board['owner']->jsonSerialize();
$board['owner'] = $board['owner']?->jsonSerialize();
unset($board['acl']);
unset($board['users']);
@@ -176,18 +177,18 @@ class CardReferenceProvider extends ADiscoverableReferenceProvider implements IS
private function sanitizeSerializedCard(array $card): array {
$card['labels'] = array_map(function (Label $label) {
return $label->jsonSerialize();
}, $card['labels']);
}, $card['labels'] ?? []);
$card['assignedUsers'] = array_map(function (Assignment $assignment) {
$result = $assignment->jsonSerialize();
$result['participant'] = $result['participant']->jsonSerialize();
return $result;
}, $card['assignedUsers']);
$card['owner'] = $card['owner']->jsonSerialize();
}, $card['assignedUsers'] ?? []);
$card['owner'] = $card['owner']?->jsonSerialize() ?? $card['owner'];
unset($card['relatedStack']);
unset($card['relatedBoard']);
$card['attachments'] = array_map(function (Attachment $attachment) {
return $attachment->jsonSerialize();
}, $card['attachments']);
}, $card['attachments'] ?? []);
return $card;
}
@@ -196,12 +197,12 @@ class CardReferenceProvider extends ADiscoverableReferenceProvider implements IS
$start = $this->urlGenerator->getAbsoluteURL('/apps/' . Application::APP_ID);
$startIndex = $this->urlGenerator->getAbsoluteURL('/index.php/apps/' . Application::APP_ID);
preg_match('/^' . preg_quote($start, '/') . '\/#\/board\/([0-9]+)\/card\/([0-9]+)$/', $url, $matches);
preg_match('/^' . preg_quote($start, '/') . '(?:\/#!?)?\/board\/([0-9]+)\/card\/([0-9]+)$/', $url, $matches);
if ($matches && count($matches) > 2) {
return [$matches[1], $matches[2]];
}
preg_match('/^' . preg_quote($startIndex, '/') . '\/#\/board\/([0-9]+)\/card\/([0-9]+)$/', $url, $matches2);
preg_match('/^' . preg_quote($startIndex, '/') . '(?:\/#!?)?\/board\/([0-9]+)\/card\/([0-9]+)$/', $url, $matches2);
if ($matches2 && count($matches2) > 2) {
return [$matches2[1], $matches2[2]];
}

View File

@@ -10,6 +10,7 @@ use OCP\IL10N;
use OCP\IURLGenerator;
class CreateCardReferenceProvider extends ADiscoverableReferenceProvider {
public function __construct(
private IL10N $l10n,
private IURLGenerator $urlGenerator,

View File

@@ -43,6 +43,7 @@ use OCA\Deck\Event\CardCreatedEvent;
use OCA\Deck\Event\CardDeletedEvent;
use OCA\Deck\Event\CardUpdatedEvent;
use OCA\Deck\Model\CardDetails;
use OCA\Deck\Model\OptionalNullableValue;
use OCA\Deck\NoPermissionException;
use OCA\Deck\Notification\NotificationHelper;
use OCA\Deck\StatusException;
@@ -284,6 +285,9 @@ class CardService {
* @param $description
* @param $order
* @param $duedate
* @param $deletedAt
* @param $archived
* @param $done
* @return \OCP\AppFramework\Db\Entity
* @throws StatusException
* @throws \OCA\Deck\NoPermissionException
@@ -291,7 +295,7 @@ class CardService {
* @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException
* @throws BadRequestException
*/
public function update($id, $title, $stackId, $type, $owner, $description = '', $order = 0, $duedate = null, $deletedAt = null, $archived = null) {
public function update($id, $title, $stackId, $type, $owner, $description = '', $order = 0, $duedate = null, $deletedAt = null, $archived = null, ?OptionalNullableValue $done = null) {
$this->cardServiceValidator->check(compact('id', 'title', 'stackId', 'type', 'owner', 'order'));
$this->permissionService->checkPermission($this->cardMapper, $id, Acl::PERMISSION_EDIT, allowDeletedCard: true);
@@ -349,6 +353,9 @@ class CardService {
if ($archived !== null) {
$card->setArchived($archived);
}
if ($done !== null) {
$card->setDone($done->getValue());
}
// Trigger update events before setting description as it is handled separately
@@ -519,6 +526,57 @@ class CardService {
return $newCard;
}
/**
* @param $id
* @return \OCA\Deck\Db\Card
* @throws StatusException
* @throws \OCA\Deck\NoPermissionException
* @throws \OCP\AppFramework\Db\DoesNotExistException
* @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException
* @throws BadRequestException
*/
public function done(int $id): Card {
$this->permissionService->checkPermission($this->cardMapper, $id, Acl::PERMISSION_EDIT);
if ($this->boardService->isArchived($this->cardMapper, $id)) {
throw new StatusException('Operation not allowed. This board is archived.');
}
$card = $this->cardMapper->find($id);
$card->setDone(new \DateTime());
$newCard = $this->cardMapper->update($card);
$this->notificationHelper->markDuedateAsRead($card);
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $newCard, ActivityManager::SUBJECT_CARD_UPDATE_DONE);
$this->changeHelper->cardChanged($id, false);
$this->eventDispatcher->dispatchTyped(new CardUpdatedEvent($card));
return $newCard;
}
/**
* @param $id
* @return \OCA\Deck\Db\Card
* @throws StatusException
* @throws \OCA\Deck\NoPermissionException
* @throws \OCP\AppFramework\Db\DoesNotExistException
* @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException
* @throws BadRequestException
*/
public function undone(int $id): Card {
$this->permissionService->checkPermission($this->cardMapper, $id, Acl::PERMISSION_EDIT);
if ($this->boardService->isArchived($this->cardMapper, $id)) {
throw new StatusException('Operation not allowed. This board is archived.');
}
$card = $this->cardMapper->find($id);
$card->setDone(null);
$newCard = $this->cardMapper->update($card);
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $newCard, ActivityManager::SUBJECT_CARD_UPDATE_UNDONE);
$this->changeHelper->cardChanged($id, false);
$this->eventDispatcher->dispatchTyped(new CardUpdatedEvent($card));
return $newCard;
}
/**
* @param $cardId
* @param $labelId

View File

@@ -190,8 +190,7 @@ class CommentService {
}
private function formatComment(IComment $comment, $addReplyTo = false): array {
$user = $this->userManager->get($comment->getActorId());
$actorDisplayName = $user !== null ? $user->getDisplayName() : $comment->getActorId();
$actorDisplayName = $this->userManager->getDisplayName($comment->getActorId()) ?? $comment->getActorId();
$formattedComment = [
'id' => (int)$comment->getId(),

View File

@@ -250,6 +250,7 @@ class BoardImportService {
$this->getImportSystem()->updateAcl($code, $acl);
} catch (\Exception $e) {
$this->addError('Failed to import acl rule for ' . $acl->getParticipant(), $e);
}
}
$this->getBoard()->setAcl($aclList);

View File

@@ -10,7 +10,7 @@
},
"token": {
"type": "string",
"pattern": "^[0-9a-fA-F]{64}$"
"pattern": "^[0-9a-fA-FT]{64,76}$"
}
}
},

View File

@@ -115,8 +115,7 @@ class SearchService {
$card = Card::fromRow($cardRow);
// TODO: Only perform one enrich call here
$self->cardService->enrichCards([$card]);
$user = $this->userManager->get($comment->getActorId());
$displayName = $user ? $user->getDisplayName() : '';
$displayName = $this->userManager->getDisplayName($comment->getActorId()) ?? '';
return new CommentSearchResultEntry($comment->getId(), $comment->getMessage(), $displayName, $card, $this->urlGenerator, $this->l10n);
}, $matchedComments);
}

View File

@@ -30,9 +30,9 @@ use OC\Files\Filesystem;
use OCA\Deck\Service\ConfigService;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Server;
use OCP\Share\Events\BeforeShareCreatedEvent;
use OCP\Share\Events\VerifyMountPointEvent;
use OCP\Share\IShare;
use Symfony\Component\EventDispatcher\GenericEvent;
class Listener {
private ConfigService $configService;
@@ -45,11 +45,11 @@ class Listener {
/**
* @psalm-suppress UndefinedClass
*/
$dispatcher->addListener('OCP\Share::preShare', [self::class, 'listenPreShare'], 1000);
$dispatcher->addListener(BeforeShareCreatedEvent::class, [self::class, 'listenPreShare'], 1000);
$dispatcher->addListener(VerifyMountPointEvent::class, [self::class, 'listenVerifyMountPointEvent'], 1000);
}
public static function listenPreShare(GenericEvent $event): void {
public static function listenPreShare(BeforeShareCreatedEvent $event): void {
/** @var self $listener */
$listener = Server::get(self::class);
$listener->overwriteShareTarget($event);
@@ -61,9 +61,8 @@ class Listener {
$listener->overwriteMountPoint($event);
}
public function overwriteShareTarget(GenericEvent $event): void {
/** @var IShare $share */
$share = $event->getSubject();
public function overwriteShareTarget(BeforeShareCreatedEvent $event): void {
$share = $event->getShare();
if ($share->getShareType() !== IShare::TYPE_DECK
&& $share->getShareType() !== DeckShareProvider::SHARE_TYPE_DECK_USER) {

2954
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
{
"name": "deck",
"description": "",
"version": "1.11.3",
"version": "1.12.1",
"authors": [
{
"name": "Julius Härtl",
@@ -31,29 +31,30 @@
},
"dependencies": {
"@babel/polyfill": "^7.12.1",
"@babel/runtime": "^7.21.5",
"@nextcloud/auth": "^2.0.0",
"@nextcloud/axios": "^2.3.0",
"@nextcloud/dialogs": "^4.0.1",
"@nextcloud/event-bus": "^3.0.2",
"@nextcloud/files": "^2.1.0",
"@nextcloud/initial-state": "^2.0.0",
"@nextcloud/l10n": "^2.1.0",
"@nextcloud/moment": "^1.2.1",
"@babel/runtime": "^7.23.2",
"@nextcloud/auth": "^2.2.1",
"@nextcloud/axios": "^2.4.0",
"@nextcloud/dialogs": "^4.2.2",
"@nextcloud/event-bus": "^3.1.0",
"@nextcloud/files": "^3.0.0",
"@nextcloud/initial-state": "^2.1.0",
"@nextcloud/l10n": "^2.2.0",
"@nextcloud/moment": "^1.2.2",
"@nextcloud/notify_push": "^1.1.3",
"@nextcloud/router": "^2.1.1",
"@nextcloud/vue": "^7.11.4",
"@nextcloud/router": "^2.2.0",
"@nextcloud/vue": "^7.12.6",
"blueimp-md5": "^2.19.0",
"dompurify": "^3.0.3",
"chroma-js": "^2.4.2",
"dompurify": "^3.0.6",
"lodash": "^4.17.21",
"markdown-it": "^13.0.1",
"markdown-it": "^13.0.2",
"markdown-it-link-attributes": "^4.0.1",
"markdown-it-task-checkbox": "^1.0.6",
"moment": "^2.29.4",
"nextcloud-vue-collections": "^0.11.1",
"p-queue": "^7.3.4",
"url-search-params-polyfill": "^8.1.1",
"vue": "^2.7.14",
"p-queue": "^7.4.1",
"url-search-params-polyfill": "^8.2.5",
"vue": "^2.7.15",
"vue-at": "^2.5.1",
"vue-click-outside": "^1.1.0",
"vue-easymde": "^2.0.0",
@@ -68,26 +69,26 @@
"extends @nextcloud/browserslist-config"
],
"engines": {
"node": "^16.0.0",
"npm": "^7.0.0 || ^8.0.0"
"node": "^20.0.0",
"npm": "^9.0.0"
},
"devDependencies": {
"@nextcloud/babel-config": "^1.0.0",
"@nextcloud/browserslist-config": "^2.3.0",
"@nextcloud/cypress": "^1.0.0-beta.2",
"@nextcloud/eslint-config": "^8.2.1",
"@nextcloud/stylelint-config": "^2.3.0",
"@nextcloud/webpack-vue-config": "^5.5.1",
"@relative-ci/agent": "^4.1.4",
"@vue/test-utils": "^1.3.5",
"@vue/vue2-jest": "^29.2.4",
"cypress": "^12.12.0",
"eslint-plugin-cypress": "^2.13.3",
"@nextcloud/browserslist-config": "^3.0.0",
"@nextcloud/cypress": "^1.0.0-beta.6",
"@nextcloud/eslint-config": "^8.3.0",
"@nextcloud/stylelint-config": "^2.3.1",
"@nextcloud/webpack-vue-config": "^6.0.0",
"@relative-ci/agent": "^4.2.1",
"@vue/test-utils": "^1.3.6",
"@vue/vue2-jest": "^29.2.6",
"cypress": "^13.5.1",
"eslint-plugin-cypress": "^2.15.1",
"eslint-webpack-plugin": "^4.0.1",
"jest": "^29.5.0",
"jest": "^29.7.0",
"jest-serializer-vue": "^3.1.0",
"stylelint-webpack-plugin": "^4.1.1",
"vue-template-compiler": "^2.7.14"
"vue-template-compiler": "^2.7.15"
},
"jest": {
"moduleFileExtensions": [

View File

@@ -4,7 +4,7 @@
resolveFromConfigFile="true"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://getpsalm.org/schema/config"
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
xsi:schemaLocation="https://getpsalm.org/schema/config"
errorBaseline="tests/psalm-baseline.xml"
>
<stubs>
@@ -18,9 +18,6 @@
</projectFiles>
<extraFiles>
<directory name="vendor" />
<ignoreFiles>
<directory name="vendor/phpunit/php-code-coverage" />
</ignoreFiles>
</extraFiles>
<issueHandlers>
<UndefinedMagicMethod>
@@ -40,6 +37,10 @@
<referencedClass name="OC\*" />
<referencedClass name="OC" />
<referencedClass name="OC\Security\CSP\ContentSecurityPolicyNonceManager" />
<referencedClass name="Symfony\Component\Console\Command\Command" />
<referencedClass name="Symfony\Component\Console\Question\ChoiceQuestion" />
<referencedClass name="Symfony\Component\Console\Question\Question" />
<referencedClass name="Symfony\Component\EventDispatcher\GenericEvent" />
</errorLevel>
</UndefinedClass>
<UndefinedDocblockClass>
@@ -50,6 +51,7 @@
<referencedClass name="Doctrine\DBAL\Driver\Statement" />
<referencedClass name="Doctrine\DBAL\Schema\Table" />
<referencedClass name="OC\Security\CSP\ContentSecurityPolicyNonceManager" />
<referencedClass name="Symfony\Component\Console\Command\Command" />
</errorLevel>
</UndefinedDocblockClass>
</issueHandlers>

View File

@@ -40,15 +40,18 @@
<router-view name="sidebar" :visible="!cardDetailsInModal || !$route.params.cardId" />
</div>
<KeyboardShortcuts />
</NcContent>
</template>
<script>
import { mapState } from 'vuex'
import AppNavigation from './components/navigation/AppNavigation.vue'
import KeyboardShortcuts from './components/KeyboardShortcuts.vue'
import { NcModal, NcContent, NcAppContent } from '@nextcloud/vue'
import { BoardApi } from './services/BoardApi.js'
import { emit, subscribe } from '@nextcloud/event-bus'
import { loadState } from '@nextcloud/initial-state'
const boardApi = new BoardApi()
@@ -59,6 +62,7 @@ export default {
NcModal,
NcContent,
NcAppContent,
KeyboardShortcuts,
},
provide() {
return {
@@ -108,7 +112,10 @@ export default {
},
},
created() {
this.$store.dispatch('loadBoards')
const initialState = loadState('deck', 'initialBoards', null)
if (initialState !== null) {
this.$store.dispatch('loadBoards')
}
this.$store.dispatch('loadSharees')
},
mounted() {

View File

@@ -22,21 +22,25 @@
<template>
<div class="controls">
<NcModal v-if="showAddCardModal" class="card-selector" @close="clickHideAddCardModel">
<CreateNewCardCustomPicker show-created-notice @cancel="clickHideAddCardModel" />
</NcModal>
<div v-if="overviewName" class="board-title">
<div class="board-bullet icon-calendar-dark" />
<h2>{{ overviewName }}</h2>
<h2 dir="auto">
{{ overviewName }}
</h2>
<NcActions>
<NcActionButton icon="icon-add" @click="clickShowAddCardModel">
{{ t('deck', 'Add card') }}
</NcActionButton>
</NcActions>
<NcModal v-if="showAddCardModal" class="card-selector" @close="clickHideAddCardModel">
<CreateNewCardCustomPicker show-created-notice @cancel="clickHideAddCardModel" />
</NcModal>
</div>
<div v-else-if="board" class="board-title">
<div :style="{backgroundColor: '#' + board.color}" class="board-bullet" />
<h2>{{ board.title }}</h2>
<h2 dir="auto">
{{ board.title }}
</h2>
<p v-if="showArchived">
({{ t('deck', 'Archived cards') }})
</p>
@@ -45,9 +49,14 @@
<SessionList v-if="isNotifyPushEnabled && presentUsers.length"
:sessions="presentUsers" />
<div v-if="searchQuery || true" class="deck-search">
<input type="search"
<input id="deck-search-input"
ref="search"
:tabindex="0"
type="search"
class="icon-search"
:value="searchQuery"
@focus="$store.dispatch('toggleShortcutLock', true)"
@blur="$store.dispatch('toggleShortcutLock', false)"
@input="$store.commit('setSearchQuery', $event.target.value)">
</div>
<div v-if="board && canManage && !showArchived && !board.archived"
@@ -66,7 +75,9 @@
type="text"
class="no-close"
:placeholder="t('deck', 'List name')"
required>
required
@focus="$store.dispatch('toggleShortcutLock', true)"
@blur="$store.dispatch('toggleShortcutLock', false)">
<input v-tooltip="t('deck', 'Add list')"
class="icon-confirm"
type="submit"
@@ -78,13 +89,16 @@
<NcPopover container=".board-action-buttons__filter"
:placement="'bottom-end'"
:aria-label="t('deck', 'Active filters')"
:title="t('deck', 'Active filters')"
:tooltip="t('deck', 'Active filters')"
@show="filterVisible=true"
@hide="filterVisible=false">
<!-- We cannot use NcActions here are the popover trigger does not update on reactive icons -->
<NcButton slot="trigger"
ref="filterPopover"
:title="t('deck', 'Apply filter')"
class="filter-button"
type="tertiary-no-background">
:type="isFilterActive ? 'primary' : 'tertiary'">
<template #icon>
<FilterIcon v-if="isFilterActive" :size="20" decorative />
<FilterOffIcon v-else :size="20" decorative />
@@ -188,7 +202,8 @@
</NcPopover>
</div>
<NcActions>
<NcActions :aria-label="t('deck', 'View Modes')"
:title="t('deck', 'Toggle View Modes')">
<NcActionButton @click="toggleShowArchived">
<template #icon>
<ArchiveIcon :size="20" decorative />
@@ -205,6 +220,12 @@
<ArrowCollapseVerticalIcon slot="icon" :size="20" decorative />
{{ t('deck', 'Toggle compact mode') }}
</NcActionButton>
<NcActionButton @click="toggleShowCardCover">
<template #icon>
<ImageIcon :size="20" decorative />
</template>
{{ showCardCover ? t('deck', 'Hide card cover images') : t('deck', 'Show card cover images') }}
</NcActionButton>
</NcActions>
<!-- FIXME: NcActionRouter currently doesn't work as an inline action -->
<NcActions>
@@ -220,9 +241,11 @@
<script>
import { mapState, mapGetters } from 'vuex'
import { subscribe, unsubscribe } from '@nextcloud/event-bus'
import { NcActions, NcActionButton, NcAvatar, NcButton, NcPopover, NcModal } from '@nextcloud/vue'
import labelStyle from '../mixins/labelStyle.js'
import ArchiveIcon from 'vue-material-design-icons/Archive.vue'
import ImageIcon from 'vue-material-design-icons/ImageMultiple.vue'
import FilterIcon from 'vue-material-design-icons/Filter.vue'
import FilterOffIcon from 'vue-material-design-icons/FilterOff.vue'
import ArrowCollapseVerticalIcon from 'vue-material-design-icons/ArrowCollapseVertical.vue'
@@ -230,6 +253,7 @@ import ArrowExpandVerticalIcon from 'vue-material-design-icons/ArrowExpandVertic
import SessionList from './SessionList.vue'
import { isNotifyPushEnabled } from '../sessions.js'
import CreateNewCardCustomPicker from '../views/CreateNewCardCustomPicker.vue'
import { getCurrentUser } from '@nextcloud/auth'
export default {
name: 'Controls',
@@ -242,6 +266,7 @@ export default {
NcPopover,
NcAvatar,
ArchiveIcon,
ImageIcon,
FilterIcon,
FilterOffIcon,
ArrowCollapseVerticalIcon,
@@ -282,6 +307,7 @@ export default {
]),
...mapState({
compactMode: state => state.compactMode,
showCardCover: state => state.showCardCover,
searchQuery: state => state.searchQuery,
}),
detailsRoute() {
@@ -311,7 +337,18 @@ export default {
}
},
},
beforeMount() {
subscribe('deck:board:show-new-card', this.clickShowAddCardModel)
subscribe('deck:board:toggle-filter-popover', this.triggerOpenFilters)
subscribe('deck:board:clear-filter', this.triggerClearFilter)
subscribe('deck:board:toggle-filter-by-me', this.triggerFilterByMe)
},
beforeDestroy() {
unsubscribe('deck:board:show-new-card', this.clickShowAddCardModel)
unsubscribe('deck:board:toggle-filter-popover', this.triggerOpenFilters)
unsubscribe('deck:board:clear-filter', this.triggerClearFilter)
unsubscribe('deck:board:toggle-filter-by-me', this.triggerFilterByMe)
this.setPageTitle('')
},
methods: {
@@ -336,6 +373,9 @@ export default {
toggleCompactMode() {
this.$store.dispatch('toggleCompactMode')
},
toggleShowCardCover() {
this.$store.dispatch('toggleShowCardCover')
},
toggleShowArchived() {
this.$store.dispatch('toggleShowArchived')
this.showArchived = !this.showArchived
@@ -387,6 +427,23 @@ export default {
}
window.document.title = newTitle
},
triggerOpenFilters() {
this.$refs.filterPopover.$el.click()
},
triggerOpenSearch() {
this.$refs.search.focus()
},
triggerClearFilter() {
this.clearFilter()
},
triggerFilterByMe() {
if (this.isFilterActive) {
this.clearFilter()
} else {
this.filter.users = [getCurrentUser().uid]
this.setFilter()
}
},
},
}
</script>
@@ -490,8 +547,11 @@ export default {
width: 44px;
height: 44px;
&:hover, &:focus {
background-color: rgba(127,127,127,0.25) !important;
&[data-popper-shown] {
background-color: var(--color-background-hover);
&.button-vue--vue-primary {
background-color: var(--color-primary-element);
}
}
}
</style>

View File

@@ -0,0 +1,279 @@
<template>
<!-- :style="{top:cardTop, left:cardLeft}" -->
<div v-if="card && selector"
ref="shortcutModal"
v-click-outside="close"
class="keyboard-shortcuts__modal"
tabindex="0"
@keydown.esc="close">
<CardItem :card="card" />
<DueDateSelector v-if="selector === 'due-date'" :card="card" :can-edit="true" />
<TagSelector v-if="selector === 'tag'" :card="card" :can-edit="true" />
<AssignmentSelector v-if="selector === 'assignment'" :card="card" :can-edit="true" />
</div>
</template>
<script>
import DueDateSelector from './card/DueDateSelector.vue'
import { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'
import { mapState } from 'vuex'
import TagSelector from './card/TagSelector.vue'
import AssignmentSelector from './card/AssignmentSelector.vue'
import CardItem from './cards/CardItem.vue'
export default {
name: 'KeyboardShortcuts',
components: {
DueDateSelector,
TagSelector,
AssignmentSelector,
CardItem,
},
data() {
return {
card: null,
cardTop: null,
cardLeft: null,
selector: null,
}
},
computed: {
...mapState({
board: state => state.currentBoard,
}),
},
created() {
document.addEventListener('keydown', this.onKeydown)
subscribe('deck:card:show-assignment-selector', this.handleShowAssignemnt)
subscribe('deck:card:show-due-date-selector', this.handleShowDueDate)
subscribe('deck:card:show-label-selector', this.handleShowLabel)
},
destroyed() {
document.removeEventListener('keydown', this.onKeydown)
unsubscribe('deck:card:show-assignment-selector', this.handleShowAssignemnt)
unsubscribe('deck:card:show-due-date-selector', this.handleShowDueDate)
unsubscribe('deck:card:show-label-selector', this.handleShowLabel)
},
methods: {
onKeydown(key) {
if (OCP.Accessibility.disableKeyboardShortcuts()) {
return
}
if (['INPUT', 'TEXTAREA', 'SELECT', 'BUTTON'].includes(key.target.tagName) || key.target.isContentEditable) {
return
}
// Global shortcuts (not board specific)
if ((key.metaKey || key.ctrlKey) && key.code === 'KeyF') {
const searchInput = document.getElementById('deck-search-input')
if (searchInput === document.activeElement) {
return false
}
document.getElementById('deck-search-input').focus()
key.preventDefault()
return true
}
if (key.code === 'Minus') {
emit('deck:global:toggle-help-dialog')
return
}
if (this.$store.state.shortcutLock || key.shiftKey || key.ctrlKey || key.altKey || key.metaKey) {
return
}
if (this.$route.name === 'card' && key.code === 'Escape') {
this.$router.push({ name: 'board' })
return
}
// Board specific shortcuts
if (!this.board) {
return
}
switch (key.code) {
case 'KeyN':
emit('deck:board:show-new-card', this.board.id)
break
case 'KeyF':
emit('deck:board:toggle-filter-popover', this.board.id)
break
case 'KeyX':
emit('deck:board:clear-filter', this.board.id)
break
case 'KeyQ':
emit('deck:board:toggle-filter-by-me', this.board.id)
break
case 'ArrowDown':
this.keyboardFocusDown()
break
case 'ArrowUp':
this.keyboardFocusUp()
break
case 'ArrowLeft':
this.keyboardFocusLeft()
break
case 'ArrowRight':
this.keyboardFocusRight()
break
default:
return
}
key.preventDefault()
},
keyboardFocusDown() {
const activeCard = document.activeElement.closest('.card')
const cards = document.querySelectorAll('.card')
const stacks = document.querySelectorAll('.stack')
const index = Array.from(cards).findIndex(card => card === activeCard)
if (index === -1) {
cards[0]?.focus()
return
}
const currentStack = Array.from(stacks).find(stack => stack.contains(document.activeElement))
const currentStackCards = currentStack.querySelectorAll('.card')
const currentStackIndex = Array.from(currentStackCards).findIndex(card => card === document.activeElement)
if (currentStackIndex === currentStackCards.length - 1) {
return
}
cards[index + 1]?.focus()
cards[index + 1]?.scrollIntoView({ behavior: 'smooth', block: 'nearest' })
},
keyboardFocusUp() {
const activeCard = document.activeElement.closest('.card')
const cards = document.querySelectorAll('.card')
const stacks = document.querySelectorAll('.stack')
const index = Array.from(cards).findIndex(card => card === activeCard)
if (index === -1) {
cards[0]?.focus()
return
}
const currentStack = Array.from(stacks).find(stack => stack.contains(document.activeElement))
const currentStackCards = currentStack.querySelectorAll('.card')
const currentStackIndex = Array.from(currentStackCards).findIndex(card => card === document.activeElement)
if (currentStackIndex === 0) {
return
}
cards[index - 1]?.focus()
cards[index - 1]?.scrollIntoView({ behavior: 'smooth', block: 'nearest' })
},
keyboardFocusLeft() {
const activeCard = document.activeElement.closest('.card')
const stacks = document.querySelectorAll('.stack')
const currentStackIndex = Array.from(stacks).findIndex(stack => stack.contains(activeCard))
if (!currentStackIndex === 0) {
return
}
const nextStack = stacks[currentStackIndex - 1] ?? stacks[0]
const currentCardTopOffset = document.activeElement.getBoundingClientRect().top
// iterate over all next stack cards and remember the one with the smallest offset
const nextStackCards = nextStack.querySelectorAll('.card')
let nextCard = null
for (const card of nextStackCards) {
const cardTopOffset = card.getBoundingClientRect().bottom
if (cardTopOffset < currentCardTopOffset) {
continue
}
nextCard = card
break
}
if (!nextCard) {
nextCard = nextStackCards[nextStackCards.length - 1]
}
nextCard?.focus()
nextCard?.scrollIntoView({ behavior: 'smooth', block: 'nearest' })
},
keyboardFocusRight() {
const activeCard = document.activeElement.closest('.card')
const stacks = document.querySelectorAll('.stack')
const currentStackIndex = Array.from(stacks).findIndex(stack => stack.contains(activeCard))
if (currentStackIndex === stacks.length - 1) {
return
}
const nextStack = stacks[currentStackIndex + 1]
const currentCardTopOffset = document.activeElement.getBoundingClientRect().top
// iterate over all next stack cards and remember the one with the smallest offset
const nextStackCards = nextStack.querySelectorAll('.card')
let nextCard = null
for (const card of nextStackCards) {
const cardTopOffset = card.getBoundingClientRect().bottom
if (cardTopOffset < currentCardTopOffset) {
continue
}
nextCard = card
break
}
if (!nextCard) {
nextCard = nextStackCards[nextStackCards.length - 1]
}
nextCard?.focus()
nextCard?.scrollIntoView({ behavior: 'smooth', block: 'nearest' })
},
handleShowDueDate({ card, element }) {
// this.cardTop = element.getBoundingClientRect().top + 'px'
// this.cardLeft = element.getBoundingClientRect().left + 'px'
this.card = card
this.selector = 'due-date'
this.$refs.shortcutModal?.focus()
},
handleShowAssignemnt({ card, element }) {
// this.cardTop = element.getBoundingClientRect().top + 'px'
// this.cardLeft = element.getBoundingClientRect().left + 'px'
this.card = card
this.selector = 'assignment'
this.$refs.shortcutModal?.focus()
},
handleShowLabel({ card, element }) {
// this.cardTop = element.getBoundingClientRect().top + 'px'
// this.cardLeft = element.getBoundingClientRect().left + 'px'
this.card = card
this.selector = 'tag'
this.$refs.shortcutModal?.focus()
},
close() {
this.card = null
this.selector = null
},
},
}
</script>
<style lang="scss" scoped>
.keyboard-shortcuts__modal {
position: fixed;
z-index: 9999;
box-shadow: 0 0 100px 30px rgba(0, 0, 0, 0.5);
max-width: 500px;
bottom: 32px;
left: 50%;
transform: translateX(-50%);
background-color: var(--color-background-dark);
border-radius: var(--border-radius-rounded);
padding: 24px 32px;
width: 100%;
border: 2px solid var(--color-border-maxcontrast);
}
</style>

View File

@@ -21,7 +21,7 @@
-->
<template>
<div class="board-wrapper">
<div class="board-wrapper" :tabindex="-1">
<Controls :board="board" />
<transition name="fade" mode="out-in">
@@ -59,7 +59,11 @@
</form>
</template>
</NcEmptyContent>
<div v-else-if="!isEmpty && !loading" key="board" class="board">
<div v-else-if="!isEmpty && !loading"
key="board"
ref="board"
class="board"
@mousedown="onMouseDown">
<Container lock-axix="y"
orientation="horizontal"
:drag-handle-selector="dragHandleSelector"
@@ -70,6 +74,7 @@
<Draggable v-for="stack in stacksByBoard"
:key="stack.id"
data-click-closes-sidebar="true"
data-dragscroll-enabled
class="stack-draggable-wrapper">
<Stack :stack="stack" :dragging="draggingStack" data-click-closes-sidebar="true" />
</Draggable>
@@ -81,7 +86,6 @@
</template>
<script>
import { Container, Draggable } from 'vue-smooth-dnd'
import { mapState, mapGetters } from 'vuex'
import Controls from '../Controls.vue'
@@ -117,6 +121,8 @@ export default {
draggingStack: false,
loading: true,
newStackTitle: '',
currentScrollPosX: null,
currentMousePosX: null,
}
},
computed: {
@@ -183,12 +189,40 @@ export default {
this.$store.dispatch('createStack', newStack)
this.newStackTitle = ''
},
onMouseDown(event) {
this.startMouseDrag(event)
},
startMouseDrag(event) {
if (!('dragscrollEnabled' in event.target.dataset)) {
return
}
event.preventDefault()
this.currentMousePosX = event.clientX
this.currentScrollPosX = this.$refs.board.scrollLeft
window.addEventListener('mousemove', this.handleMouseDrag)
window.addEventListener('mouseup', this.stopMouseDrag)
window.addEventListener('mouseleave', this.stopMouseDrag)
},
handleMouseDrag(event) {
event.preventDefault()
const deltaX = event.clientX - this.currentMousePosX
this.$refs.board.scrollLeft = this.currentScrollPosX - deltaX
},
stopMouseDrag(event) {
window.removeEventListener('mousemove', this.handleMouseDrag)
window.removeEventListener('mouseup', this.stopMouseDrag)
window.removeEventListener('mouseleave', this.stopMouseDrag)
},
},
}
</script>
<style lang="scss" scoped>
@import '../../css/animations';
@import '../../css/variables';
@@ -248,9 +282,9 @@ export default {
padding: $stack-spacing;
overflow-x: hidden;
overflow-y: auto;
scrollbar-gutter: stable;
padding-top: 15px;
margin-top: -10px;
scrollbar-gutter: stable;
}
.smooth-dnd-container.vertical > .smooth-dnd-draggable-wrapper {

View File

@@ -56,7 +56,7 @@
<NcAppSidebarTab v-if="hasActivity"
id="activity"
:order="3"
:name="t('deck', 'Timeline')">
:name="t('deck', 'Activity')">
<template #icon>
<ActivityIcon :size="20" />
</template>

View File

@@ -4,7 +4,7 @@
<ul>
<li v-for="deletedStack in deletedStacks" :key="deletedStack.id">
<span class="icon icon-deck" />
<div class="title">
<div class="title" dir="auto">
<span>{{ deletedStack.title }}</span>
<span class="timestamp">{{ relativeDate(deletedStack.deletedAt*1000) }}</span>
</div>
@@ -18,7 +18,7 @@
<ul>
<li v-for="deletedCard in deletedCards" :key="deletedCard.id">
<div class="icon icon-deck" />
<div class="title">
<div class="title" dir="auto">
<span>{{ deletedCard.title }}</span>
<span class="timestamp">{{ relativeDate(deletedCard.deletedAt*1000) }}</span>
</div>

View File

@@ -26,14 +26,14 @@
<div v-click-outside="stopCardCreation"
class="stack__header"
:class="{'stack__header--add': showAddCard}"
tabindex="0"
:aria-label="stack.title">
<transition name="fade" mode="out-in">
<h3 v-if="!canManage || isArchived">
<h3 v-if="!canManage || isArchived" tabindex="0">
{{ stack.title }}
</h3>
<h3 v-else-if="!editing"
v-tooltip="stack.title"
dir="auto"
tabindex="0"
:aria-label="stack.title"
class="stack__title"
@@ -48,6 +48,7 @@
@keyup.esc="cancelEdit">
<input v-model="copiedStack.title"
v-focus
dir="auto"
type="text"
required="required">
<input v-tooltip="t('deck', 'Edit list title')"
@@ -131,6 +132,7 @@
data-click-closes-sidebar="true"
non-drag-area-selector=".dragDisabled"
:drag-handle-selector="dragHandleSelector"
data-dragscroll-enabled
@should-accept-drop="canEdit"
@drag-start="draggingCard = true"
@drag-end="draggingCard = false"
@@ -328,8 +330,6 @@ export default {
.stack {
width: $stack-width + $stack-spacing * 3;
margin-left: math.div($stack-spacing, 2);
margin-right: math.div($stack-spacing, 2);
}
.stack__header {
@@ -338,6 +338,7 @@ export default {
top: 0;
z-index: 100;
padding-left: $card-spacing;
padding-right: $card-spacing;
cursor: grab;
min-height: 44px;
@@ -346,10 +347,10 @@ export default {
content: ' ';
display: block;
position: absolute;
width: 100%;
width: calc(100% - 16px);
height: 20px;
top: 30px;
right: 10px;
left: 0px;
z-index: 99;
transition: top var(--animation-slow);
@@ -409,7 +410,7 @@ export default {
z-index: 100;
display: flex;
margin-top: 5px;
margin-bottom: 20px;
margin-bottom: 8px;
background-color: var(--color-main-background);
form {
@@ -417,7 +418,7 @@ export default {
margin-left: 12px;
margin-right: 12px;
width: 100%;
box-shadow: 0 0 3px var(--color-box-shadow);
border: 2px solid var(--color-border);
border-radius: var(--border-radius-large);
overflow: hidden;
padding: 2px;

View File

@@ -5,7 +5,10 @@
<!-- Edit Tag -->
<template v-if="editingLabelId === label.id">
<form class="label-form" @submit.prevent="updateLabel(label)">
<NcColorPicker class="color-picker-wrapper" :value="'#' + editingLabel.color" @input="updateColor">
<NcColorPicker class="color-picker-wrapper"
:value="'#' + editingLabel.color"
:advanced-fields="true"
@input="updateColor">
<div :style="{ backgroundColor: '#' + editingLabel.color }" class="color0 icon-colorpicker" />
</NcColorPicker>
<input v-model="editingLabel.title" type="text">
@@ -48,7 +51,10 @@
<li v-if="addLabel" class="editing">
<!-- New Tag -->
<form class="label-form" @submit.prevent="clickAddLabel">
<NcColorPicker class="color-picker-wrapper" :value="'#' + addLabelObj.color" @input="updateColor">
<NcColorPicker class="color-picker-wrapper"
:value="'#' + addLabelObj.color"
:advanced-fields="true"
@input="updateColor">
<div :style="{ backgroundColor: '#' + addLabelObj.color }" class="color0 icon-colorpicker" />
</NcColorPicker>
<input v-model="addLabelObj.title" type="text">

View File

@@ -1,5 +1,5 @@
<template>
<div class="selector-wrapper" :aria-label="t('deck', 'Assign to users/groups/circles')">
<div class="selector-wrapper" :aria-label="t('deck', 'Assign to users/groups/circles')" data-test="assignment-selector">
<div class="selector-wrapper--icon">
<AccountMultiple :size="20" />
</div>

View File

@@ -23,12 +23,12 @@
<template>
<AttachmentDragAndDrop :card-id="cardId" class="drop-upload--sidebar">
<div v-if="!isReadOnly" class="button-group">
<button class="icon-upload" @click="uploadNewFile()">
<NcButton class="icon-upload" @click="uploadNewFile()">
{{ t('deck', 'Upload new files') }}
</button>
<button class="icon-folder" @click="shareFromFiles()">
</NcButton>
<NcButton class="icon-folder" @click="shareFromFiles()">
{{ t('deck', 'Share from Files') }}
</button>
</NcButton>
</div>
<input ref="filesAttachment"
type="file"
@@ -103,7 +103,7 @@
<script>
import axios from '@nextcloud/axios'
import { NcActions, NcActionButton, NcActionLink } from '@nextcloud/vue'
import { NcActions, NcActionButton, NcActionLink, NcButton } from '@nextcloud/vue'
import AttachmentDragAndDrop from '../AttachmentDragAndDrop.vue'
import relativeDate from '../../mixins/relativeDate.js'
import { formatFileSize } from '@nextcloud/files'
@@ -128,6 +128,7 @@ export default {
NcActions,
NcActionButton,
NcActionLink,
NcButton,
AttachmentDragAndDrop,
},
mixins: [relativeDate, attachmentUpload],
@@ -267,6 +268,7 @@ export default {
.button-group {
display: flex;
gap: calc(var(--default-grid-baseline) * 3);
.icon-upload, .icon-folder {
padding-left: 44px;

View File

@@ -0,0 +1,27 @@
<template>
<div class="selector-wrapper" :aria-label="label">
<div class="selector-wrapper--icon">
<slot name="icon" />
</div>
<div class="selector-wrapper--content">
<slot />
</div>
</div>
</template>
<script>
import { defineComponent } from 'vue'
export default defineComponent({
name: 'CardDetailEntry',
props: {
label: {
type: String,
required: true,
},
},
})
</script>
<style lang="scss">
@import '../../css/selector';
</style>

View File

@@ -39,13 +39,7 @@
{{ t('deck', 'Open in bigger view') }}
</NcActionButton>
<NcActionButton v-for="action in cardActions"
:key="action.label"
:close-after-click="true"
:icon="action.icon"
@click="action.callback(cardRichObject)">
{{ action.label }}
</NcActionButton>
<CardMenuEntries :card="currentCard" :hide-details-entry="true" />
</template>
<NcAppSidebarTab id="details"
@@ -78,7 +72,7 @@
<NcAppSidebarTab v-if="hasActivity"
id="timeline"
:order="3"
:name="t('deck', 'Timeline')">
:name="t('deck', 'Activity')">
<template #icon>
<ActivityIcon :size="20" />
</template>
@@ -89,7 +83,6 @@
<script>
import { NcActionButton, NcAppSidebar, NcAppSidebarTab } from '@nextcloud/vue'
import { generateUrl } from '@nextcloud/router'
import { mapState, mapGetters } from 'vuex'
import CardSidebarTabDetails from './CardSidebarTabDetails.vue'
import CardSidebarTabAttachments from './CardSidebarTabAttachments.vue'
@@ -104,6 +97,7 @@ import ActivityIcon from 'vue-material-design-icons/LightningBolt.vue'
import { showError } from '@nextcloud/dialogs'
import { getLocale } from '@nextcloud/l10n'
import CardMenuEntries from '../cards/CardMenuEntries.vue'
const capabilities = window.OC.getCapabilities()
@@ -121,6 +115,7 @@ export default {
AttachmentIcon,
CommentIcon,
HomeIcon,
CardMenuEntries,
},
mixins: [relativeDate],
props: {
@@ -164,15 +159,6 @@ export default {
subtitleTooltip() {
return t('deck', 'Modified') + ': ' + this.formatDate(this.currentCard.lastModified) + '\n' + t('deck', 'Created') + ': ' + this.formatDate(this.currentCard.createdAt)
},
cardRichObject() {
return {
id: '' + this.currentCard.id,
name: this.currentCard.title,
boardname: this.currentBoard.title,
stackname: this.stackById(this.currentCard.stackId)?.title,
link: window.location.protocol + '//' + window.location.host + generateUrl('/apps/deck/') + `#/board/${this.currentBoard.id}/card/${this.currentCard.id}`,
}
},
cardDetailsInModal: {
get() {
return this.$store.getters.config('cardDetailsInModal')

View File

@@ -35,7 +35,10 @@
@select="assignUserToCard"
@remove="removeUserFromCard" />
<DueDateSelector :card="card" :can-edit="canEdit && !saving" @change="updateCardDue" />
<DueDateSelector :card="card"
:can-edit="canEdit"
@change="updateCardDue"
@input="debouncedUpdateCardDue" />
<div v-if="projectsEnabled" class="section-wrapper">
<CollectionList v-if="card.id"
@@ -66,6 +69,7 @@ import Description from './Description.vue'
import TagSelector from './TagSelector.vue'
import AssignmentSelector from './AssignmentSelector.vue'
import DueDateSelector from './DueDateSelector.vue'
import { debounce } from 'lodash'
export default {
name: 'CardSidebarTabDetails',
@@ -85,7 +89,6 @@ export default {
},
data() {
return {
saving: false,
addedLabelToCard: null,
copiedCard: null,
locale: getLocale(),
@@ -105,7 +108,6 @@ export default {
this.$store.dispatch('setConfig', { cardDetailsInModal: newValue })
},
},
labelsSorted() {
return [...this.currentBoard.labels].sort((a, b) => (a.title < b.title) ? -1 : 1)
},
@@ -135,15 +137,6 @@ export default {
localStorage.setItem('deck.selectedStackId', this.card.stackId)
},
async updateCardDue(val) {
this.saving = true
await this.$store.dispatch('updateCardDue', {
...this.copiedCard,
duedate: val ? (new Date(val)).toISOString() : null,
})
this.saving = false
},
assignUserToCard(user) {
this.$store.dispatch('assignCardToUser', {
card: this.copiedCard,
@@ -164,6 +157,17 @@ export default {
})
},
updateCardDue(val) {
this.$store.dispatch('updateCardDue', {
...this.copiedCard,
duedate: val ? (new Date(val)).toISOString() : null,
})
},
debouncedUpdateCardDue: debounce(function(val) {
this.updateCardDue(val)
}, 500),
addLabelToCard(newLabel) {
this.copiedCard.labels.push(newLabel)
const data = {
@@ -174,13 +178,14 @@ export default {
},
async addLabelToBoardAndCard(name) {
await this.$store.dispatch('addLabelToCurrentBoardAndCard', {
const newLabel = await this.$store.dispatch('addLabelToCurrentBoardAndCard', {
card: this.copiedCard,
newLabel: {
title: name,
color: this.randomColor(),
},
})
this.copiedCard.labels.push(newLabel)
},
removeLabelFromCard(removedLabel) {
@@ -207,15 +212,6 @@ export default {
}
</script>
<style lang="scss" scoped>
.section-wrapper:deep(.mx-datepicker-main.mx-datepicker-popup) {
left: 0 !important;
}
.section-wrapper:deep(.mx-datepicker-main.mx-datepicker-popup.mx-datepicker-sidebar) {
padding: 0 !important;
}
.section-wrapper {
display: flex;
max-width: 100%;
@@ -233,12 +229,36 @@ export default {
display: flex;
flex-wrap: wrap;
button.action-item--single {
margin-top: -3px;
.remove-due-button{
margin-top: -2px;
margin-left: 6px;
}
}
}
.button-group {
width: 100%;
display: flex;
button {
width: 100%;
}
}
.done {
display: flex;
}
.tag {
flex-grow: 0;
flex-shrink: 1;
overflow: hidden;
padding: 0px 5px;
border-radius: 15px;
font-size: 85%;
margin-right: 3px;
}
.avatarLabel {
padding: 6px
}
@@ -268,9 +288,3 @@ export default {
z-index: 0;
}
</style>
<style>
.mx-datepicker-main.mx-datepicker-popup {
/* above the modal */
z-index: 9999 !important;
}
</style>

View File

@@ -41,6 +41,7 @@
</span>
</template>
<div ref="contentEditable"
dir="auto"
class="comment-form__contenteditable"
contenteditable
@keydown.enter="handleKeydown"

View File

@@ -13,6 +13,7 @@
</NcActions>
</div>
<NcRichText class="comment--content"
dir="auto"
:text="richText(comment)"
:arguments="richArgs(comment)"
:autolink="true" />
@@ -48,18 +49,24 @@
<NcActionButton icon="icon-close" @click="hideUpdateForm" />
</NcActions>
<div class="spacer" />
<div class="timestamp">
<div class="timestamp"
:aria-label="formattedTimestamp"
:title="formattedTimestamp">
{{ relativeDate(comment.creationDateTime) }}
</div>
</div>
<CommentItem v-if="comment.replyTo" :reply="true" :comment="comment.replyTo" />
<div v-show="!edit" ref="richTextElement">
<NcRichText class="comment--content"
dir="auto"
:text="richText(comment)"
:arguments="richArgs(comment)"
:autolink="true" />
</div>
<CommentForm v-if="edit" v-model="commentMsg" @submit="updateComment" />
<CommentForm v-if="edit"
v-model="commentMsg"
dir="auto"
@submit="updateComment" />
</li>
</template>
@@ -70,6 +77,7 @@ import { getCurrentUser } from '@nextcloud/auth'
import md5 from 'blueimp-md5'
import relativeDate from '../../mixins/relativeDate.js'
import ReplyIcon from 'vue-material-design-icons/Reply.vue'
import moment from 'moment'
const AtMention = {
name: 'AtMention',
@@ -158,6 +166,9 @@ export default {
return (div.textContent || div.innerText || '')
}
},
formattedTimestamp() {
return t('deck', 'Created:') + ' ' + moment(this.comment.creationDateTime).format('LLLL')
},
},
methods: {

View File

@@ -21,7 +21,7 @@
-->
<template>
<div>
<div data-test="description">
<h5>
{{ t('deck', 'Description') }}
<span v-if="descriptionLastEdit && !descriptionSaving">{{ t('deck', '(Unsaved)') }}</span>
@@ -55,6 +55,7 @@
<template v-else>
<div v-if="!descriptionEditing && hasDescription"
id="description-preview"
dir="auto"
@click="clickedPreview"
v-html="renderedDescription" />
<p v-else-if="!descriptionEditing" class="placeholder" @click="showEditor()">

View File

@@ -1,43 +1,123 @@
<template>
<div class="selector-wrapper" :aria-label="t('deck', 'Assign a due date to this card')">
<div class="selector-wrapper--icon">
<Calendar :size="20" />
</div>
<div class="duedate-selector">
<NcDatetimePicker v-model="duedate"
<CardDetailEntry :label="t('deck', 'Assign a due date to this card…')" data-test="due-date-selector">
<Calendar v-if="!card.done" slot="icon" :size="20" />
<CalendarCheck v-else slot="icon" :size="20" />
<template v-if="!card.done && !card.archived">
<NcDateTimePickerNative v-if="duedate"
id="card-duedate-picker"
v-model="duedate"
:placeholder="t('deck', 'Set a due date')"
type="datetime"
:minute-step="5"
:show-second="false"
:lang="lang"
:formatter="format"
:disabled="!canEdit"
:shortcuts="shortcuts"
:append-to-body="true"
confirm />
<NcActions v-if="canEdit">
<NcActionButton v-if="duedate" icon="icon-delete" @click="removeDue()">
:hide-label="true"
type="datetime-local" />
<NcActions v-if="canEdit"
:menu-title="!duedate ? t('deck', 'Add due date') : null"
type="tertiary"
data-cy-due-date-actions>
<template v-if="!duedate" #icon>
<Plus :size="20" />
</template>
<NcActionButton v-for="shortcut in reminderOptions"
:key="shortcut.key"
close-after-click
:data-cy-due-date-shortcut="shortcut.key"
@click="() => selectShortcut(shortcut)">
{{ shortcut.label }}
</NcActionButton>
<NcActionSeparator />
<NcActionButton v-if="!duedate"
close-after-click
data-cy-due-date-pick
@click="initDate">
<template #icon>
<Plus :size="20" />
</template>
{{ t('deck', 'Choose a date') }}
</NcActionButton>
<NcActionButton v-else
icon="icon-delete"
close-after-click
data-cy-due-date-remove
@click="removeDue">
{{ t('deck', 'Remove due date') }}
</NcActionButton>
</NcActions>
</div>
</div>
<NcButton v-if="!card.done"
type="secondary"
class="completed-button"
@click="changeCardDoneStatus()">
<template #icon>
<CheckIcon :size="20" />
</template>
{{ t('deck', 'Completed') }}
</NcButton>
</template>
<template v-else>
<div class="done-info">
<span v-if="card.done" class="done-info--done">
{{ formatReadableDate(card.done) }}
</span>
<span v-if="duedate" class="done-info--duedate" :class="{ 'dimmed': card.done }">
{{ t('deck', 'Due at:') }}
{{ formatReadableDate(duedate) }}
</span>
</div>
<div class="due-actions">
<NcButton v-if="!card.archived"
type="tertiary"
:title="t('deck', 'Not completed')"
@click="changeCardDoneStatus()">
<template #icon>
<ClearIcon :size="20" />
</template>
</NcButton>
<NcButton type="secondary" @click="archiveUnarchiveCard()">
<template #icon>
<ArchiveIcon :size="20" />
</template>
{{ card.archived ? t('deck', 'Unarchive card') : t('deck', 'Archive card') }}
</NcButton>
</div>
</template>
</CardDetailEntry>
</template>
<script>
import { defineComponent } from 'vue'
import { NcActionButton, NcActions, NcDatetimePicker } from '@nextcloud/vue'
import { getDayNamesMin, getFirstDay, getMonthNamesShort } from '@nextcloud/l10n'
import Calendar from 'vue-material-design-icons/Calendar.vue'
import {
NcActionButton,
NcActions,
NcActionSeparator,
NcButton,
NcDateTimePickerNative,
} from '@nextcloud/vue'
import readableDate from '../../mixins/readableDate.js'
import { getDayNamesMin, getFirstDay, getMonthNamesShort } from '@nextcloud/l10n'
import moment from '@nextcloud/moment'
import ArchiveIcon from 'vue-material-design-icons/Archive.vue'
import Plus from 'vue-material-design-icons/Plus.vue'
import Calendar from 'vue-material-design-icons/Calendar.vue'
import CalendarCheck from 'vue-material-design-icons/CalendarCheck.vue'
import CheckIcon from 'vue-material-design-icons/Check.vue'
import ClearIcon from 'vue-material-design-icons/Close.vue'
import CardDetailEntry from './CardDetailEntry.vue'
export default defineComponent({
name: 'DueDateSelector',
components: {
NcButton,
ArchiveIcon,
ClearIcon,
CardDetailEntry,
Plus,
Calendar,
CalendarCheck,
CheckIcon,
NcActions,
NcActionButton,
NcDatetimePicker,
NcActionSeparator,
NcDateTimePickerNative,
},
mixins: [
readableDate,
@@ -68,71 +148,113 @@ export default defineComponent({
stringify: this.stringify,
parse: this.parse,
},
shortcuts: [
{
text: t('deck', 'Today'),
onClick() {
const date = new Date()
date.setDate(date.getDate())
date.setHours(23)
date.setMinutes(59)
return date
},
},
{
text: t('deck', 'Tomorrow'),
onClick() {
const date = new Date()
date.setDate(date.getDate() + 1)
date.setHours(23)
date.setMinutes(59)
return date
},
},
{
text: t('deck', 'Next week'),
onClick() {
const date = new Date()
date.setDate(date.getDate() + 7)
date.setHours(23)
date.setMinutes(59)
return date
},
},
{
text: t('deck', 'Next month'),
onClick() {
const date = new Date()
date.setDate(date.getDate() + 30)
date.setHours(23)
date.setMinutes(59)
return date
},
},
],
}
},
computed: {
duedate: {
get() {
return this.card.duedate ? new Date(this.card.duedate) : null
return this.card?.duedate ? new Date(this.card.duedate) : null
},
set(val) {
this.$emit('change', val)
this.$emit('input', val ? new Date(val) : null)
},
},
reminderOptions() {
const currentDateTime = moment()
// Same day 18:00 PM (or hidden)
const laterTodayTime = (currentDateTime.hour() < 18)
? moment().hour(18)
: null
// Tomorrow 08:00 AM
const tomorrowTime = moment().add(1, 'days').hour(8)
// Saturday 08:00 AM (or hidden)
const thisWeekendTime = (currentDateTime.day() !== 6 && currentDateTime.day() !== 0)
? moment().day(6).hour(8)
: null
// Next Monday 08:00 AM
const nextWeekTime = moment().add(1, 'weeks').day(1).hour(8)
return [
{
key: 'laterToday',
timestamp: this.getTimestamp(laterTodayTime),
label: t('deck', 'Later today {timeLocale}', { timeLocale: laterTodayTime?.format('LT') }),
ariaLabel: t('deck', 'Set due date for later today'),
},
{
key: 'tomorrow',
timestamp: this.getTimestamp(tomorrowTime),
label: t('deck', 'Tomorrow {timeLocale}', { timeLocale: tomorrowTime?.format('ddd LT') }),
ariaLabel: t('deck', 'Set due date for tomorrow'),
},
{
key: 'thisWeekend',
timestamp: this.getTimestamp(thisWeekendTime),
label: t('deck', 'This weekend {timeLocale}', { timeLocale: thisWeekendTime?.format('ddd LT') }),
ariaLabel: t('deck', 'Set due date for this weekend'),
},
{
key: 'nextWeek',
timestamp: this.getTimestamp(nextWeekTime),
label: t('deck', 'Next week {timeLocale}', { timeLocale: nextWeekTime?.format('ddd LT') }),
ariaLabel: t('deck', 'Set due date for next week'),
},
].filter(option => option.timestamp !== null)
},
},
methods: {
initDate() {
if (this.duedate === null) {
// We initialize empty dates with a time once clicked to make picking a day easier
const now = new Date()
now.setDate(now.getDate() + 1)
now.setHours(8)
now.setMinutes(0)
now.setMilliseconds(0)
this.duedate = now
}
},
removeDue() {
this.duedate = null
this.$emit('change', null)
},
selectShortcut(shortcut) {
this.duedate = shortcut.timestamp
this.$emit('change', shortcut.timestamp)
},
getTimestamp(momentObject) {
return momentObject?.minute(0).second(0).millisecond(0).toDate() || null
},
changeCardDoneStatus() {
this.$store.dispatch('changeCardDoneStatus', { ...this.card, done: !this.card.done })
},
archiveUnarchiveCard() {
this.$store.dispatch('archiveUnarchiveCard', { ...this.card, archived: !this.card.archived })
},
},
})
</script>
<style lang="scss">
@import '../../css/selector';
<style scoped lang="scss">
.done-info {
flex-grow: 1;
}
.duedate-selector {
.done-info--duedate,
.done-info--done {
display: flex;
padding-top: 10px;
&.dimmed {
color: var(--color-text-maxcontrast);
}
}
.completed-button {
margin-left: auto;
}
.due-actions {
display: flex;
align-items: flex-start;
}
</style>

View File

@@ -1,9 +1,9 @@
<template>
<div class="selector-wrapper" :aria-label="t('deck', 'Assign a tag to this card')">
<div class="selector-wrapper" :aria-label="t('deck', 'Assign a tag to this card')" data-test="tag-selector">
<div class="selector-wrapper--icon">
<TagMultiple :size="20" />
</div>
<NcMultiselect v-model="assignedLabels"
<NcMultiselect :value="assignedLabels"
class="selector-wrapper--selector"
:multiple="true"
:disabled="disabled"
@@ -12,13 +12,19 @@
:taggable="true"
label="title"
track-by="id"
tag-position="bottom"
@select="onSelect"
@remove="onRemove"
@tag="onNewTag">
<template #option="scope">
<div :style="{ backgroundColor: '#' + scope.option.color, color: textColor(scope.option.color)}" class="tag">
<div v-if="!scope.option?.isTag" :style="{ backgroundColor: '#' + scope.option.color, color: textColor(scope.option.color)}" class="tag">
{{ scope.option.title }}
</div>
<div v-else>
{{ t('deck', 'Create a new tag:') }} <div class="tag">
{{ scope.option.label }}
</div>
</div>
</template>
<template #tag="scope">
<div :style="{ backgroundColor: '#' + scope.option.color, color: textColor(scope.option.color)}" class="tag">
@@ -52,32 +58,15 @@ export default {
default: false,
},
},
data() {
return {
assignedLabels: null,
}
},
computed: {
labelsSorted() {
return [...this.labels].sort((a, b) => (a.title < b.title) ? -1 : 1)
},
},
watch: {
card() {
this.initialize()
assignedLabels() {
return [...this.card.labels].sort((a, b) => (a.title < b.title) ? -1 : 1)
},
},
mounted() {
this.initialize()
},
methods: {
async initialize() {
if (!this.card) {
return
}
this.assignedLabels = [...this.card.labels].sort((a, b) => (a.title < b.title) ? -1 : 1)
},
onSelect(newLabel) {
this.$emit('select', newLabel)
},

View File

@@ -24,7 +24,7 @@
<div class="avatars">
<div class="avatar-list" @click.stop="togglePopover">
<div v-if="popover.length > 0">
<div class="avatardiv icon-more" />
<AccountMultiple class="avatardiv more-avatars" :size="24" />
</div>
<div v-for="user in firstUsers" :key="user.id">
<NcAvatar v-if="user.type === 0"
@@ -72,12 +72,14 @@
<script>
import { NcAvatar, NcPopoverMenu, Tooltip } from '@nextcloud/vue'
import { generateUrl } from '@nextcloud/router'
import AccountMultiple from 'vue-material-design-icons/AccountMultiple.vue'
export default {
name: 'AvatarList',
components: {
NcAvatar,
NcPopoverMenu,
AccountMultiple,
},
directives: {
tooltip: Tooltip,
@@ -151,7 +153,6 @@ export default {
<style scoped lang="scss">
.avatars {
margin-top: 5px;
position: relative;
flex-grow: 1;
:deep(.popovermenu) {
@@ -173,25 +174,29 @@ export default {
display: inline-flex;
padding-right: $avatar-offset;
flex-direction: row-reverse;
& > div {
height: 32px;
}
.avatardiv,
:deep(.avatardiv) {
width: 36px;
height: 36px;
width: 32px;
height: 32px;
box-sizing: content-box !important;
margin-right: -$avatar-offset;
transition: margin-right 0.2s ease-in-out;
border: 2px solid var(--color-main-background);
}
&.icon-more {
width: 32px;
height: 32px;
opacity: .5;
background-color: var(--color-background-dark) !important;
cursor: pointer;
}
}
&:hover div:nth-child(n+2) :deep(.avatardiv) {
margin-right: 1px;
.more-avatars {
width: 32px;
height: 32px;
background-color: var(--color-background-dark) !important;
cursor: pointer;
color: var(--color-text-maxcontrast);
}
}
.popovermenu {

View File

@@ -22,46 +22,66 @@
<template>
<div v-if="card" class="badges">
<CardId v-if="idBadge" class="icon-badge" :card="card" />
<div v-if="card.commentsCount > 0"
v-tooltip="commentsHint"
class="icon-badge"
@click.stop="openComments">
<CommentUnreadIcon v-if="card.commentsUnread > 0" :size="16" />
<CommentIcon v-else :size="16" />
<span>{{ card.commentsCount }}</span>
<div class="badge-left">
<DueDate v-if="card.duedate || card.done" :card="card" />
<div class="inline-badges">
<CardId v-if="idBadge" class="icon-badge" :card="card" />
<div v-if="card.commentsCount > 0"
v-tooltip="commentsHint"
class="icon-badge"
@click.stop="openComments">
<CommentUnreadIcon v-if="card.commentsUnread > 0" :size="16" />
<CommentIcon v-else :size="16" />
<span>{{ card.commentsCount }}</span>
</div>
<div v-if="card.description && checkListCount > 0" class="icon-badge">
<CheckmarkIcon :size="16" :title="t('deck', 'Todo items')" />
<span>{{ checkListCheckedCount }}/{{ checkListCount }}</span>
</div>
<div v-else-if="card.description && card.description.trim() && checkListCount == 0" class="icon-badge">
<TextIcon :size="16" decorative />
</div>
<div v-if="card.attachmentCount > 0" class="icon-badge">
<AttachmentIcon :size="16" />
<span>{{ card.attachmentCount }}</span>
</div>
</div>
</div>
<div v-if="card.description && checkListCount > 0" class="icon-badge">
<CheckmarkIcon :size="16" :title="t('deck', 'Todo items')" />
<span>{{ checkListCheckedCount }}/{{ checkListCount }}</span>
<div class="badge-right">
<NcAvatarList :users="card.assignedUsers" :size="32" />
<slot />
</div>
<TextIcon v-else-if="card.description && card.description.trim() && checkListCount == 0" :size="16" decorative />
<div v-if="card.attachmentCount > 0" class="icon-badge">
<AttachmentIcon :size="16" />
<span>{{ card.attachmentCount }}</span>
</div>
<NcAvatarList :users="card.assignedUsers" />
<CardMenu class="card-menu" :card="card" />
</div>
</template>
<script>
import NcAvatarList from './AvatarList.vue'
import CardId from './badges/CardId.vue'
import CardMenu from './CardMenu.vue'
import TextIcon from 'vue-material-design-icons/Text.vue'
import AttachmentIcon from 'vue-material-design-icons/Paperclip.vue'
import CheckmarkIcon from 'vue-material-design-icons/CheckboxMarked.vue'
import CommentIcon from 'vue-material-design-icons/Comment.vue'
import CommentUnreadIcon from 'vue-material-design-icons/CommentAccount.vue'
import DueDate from './badges/DueDate.vue'
export default {
name: 'CardBadges',
components: { NcAvatarList, CardMenu, TextIcon, AttachmentIcon, CheckmarkIcon, CommentIcon, CommentUnreadIcon, CardId },
components: {
DueDate,
NcAvatarList,
TextIcon,
AttachmentIcon,
CheckmarkIcon,
CommentIcon,
CommentUnreadIcon,
CardId,
},
props: {
card: {
type: Object,
@@ -102,26 +122,33 @@ export default {
display: flex;
width: 100%;
flex-grow: 1;
flex-direction: row;
gap: 3px;
.icon-badge {
opacity: .7;
color: var(--color-text-maxcontrast);
display: flex;
margin-right: 2px;
span,
&:deep(span) {
padding: 10px 2px;
padding: 2px;
}
}
}
.inline-badges {
display: flex;
flex-direction: row;
flex-wrap: wrap;
gap: 3px;
}
.badges .icon.due {
background-position: 4px center;
border-radius: 3px;
margin-top: 10px;
margin-bottom: 10px;
border-radius: var(--border-radius);
padding: 4px;
font-size: 90%;
font-size: 13px;
display: flex;
align-items: center;
opacity: .5;
@@ -153,6 +180,31 @@ export default {
}
}
.badge-left, .badge-right {
display: flex;
}
.badge-left {
align-self: end;
margin-bottom: 8px;
flex-basis: auto;
flex-grow: 1;
flex-shrink: 1;
flex-wrap: wrap;
align-content: flex-end;
gap: 3px;
}
.badge-right {
align-items: center;
align-self: flex-end;
display: flex;
justify-items: center;
max-width: 165px;
flex-grow: 0;
flex-shrink: 0;
}
.fade-enter-active, .fade-leave-active {
transition: opacity .125s;
}
@@ -166,9 +218,5 @@ export default {
align-items: flex-start;
max-height: none !important;
}
.card-menu {
display: none;
}
}
</style>

View File

@@ -0,0 +1,106 @@
<!--
- @copyright Copyright (c) 2023 Johannes Szeibert <johannes@szeibert.de>
-
- @author Johannes Szeibert <johannes@szeibert.de>
-
- @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/>.
-
-->
<template>
<div v-if="cardId && ( attachments.length > 0 )" class="card-cover">
<div v-for="(attachment, index) in attachments"
:key="attachment.id"
:class="['image-wrapper', { 'rounded-left': index === 0 }, { 'rounded-right': index === attachments.length - 1 }]"
:style="{ backgroundImage: `url(${attachmentPreview(attachment)})` }" />
</div>
</template>
<script>
import { mapActions } from 'vuex'
import { generateUrl } from '@nextcloud/router'
export default {
name: 'CardCover',
props: {
cardId: {
type: Number,
required: true,
},
},
computed: {
attachments() {
return [...this.$store.getters.attachmentsByCard(this.cardId)]
// Filter deleted and hasPreview
.filter(attachment => attachment.deletedAt >= 0 && attachment.extendedData.hasPreview)
// sort by id (same as in AttachmentList) to get Newest
.sort((a, b) => b.id - a.id)
// limit to 3 like with android Deck app
.slice(0, 3)
},
attachmentPreview() {
// FIXME find a better way to get the stack-width
const stackWidth = getComputedStyle(document.documentElement).getPropertyValue('--stack-width').trim()
const x = Math.ceil(parseInt(stackWidth) / this.attachments.length) | 260
const y = 100
return attachment => (
// The core preview provider is a bit strange at times, providing much larger than needed images
// when cropping is enabled. Therefore use a=1 to not crop the image and let css handle the overflow
attachment.extendedData.fileid ? generateUrl(`/core/preview?fileId=${attachment.extendedData.fileid}&x=${x}&y=${y}&a=1`) : null
)
},
},
watch: {
cardId: {
immediate: true,
handler() {
if (this.$store.getters.cardById(this.cardId)?.attachmentCount > 0) {
this.fetchAttachments(this.cardId)
}
},
},
},
methods: {
...mapActions([
'fetchAttachments',
]),
},
}
</script>
<style lang="scss" scoped>
@import '../../css/variables';
.card-cover {
height: 100px;
display: flex;
margin-top: -8px;
margin-left: -8px;
margin-right: -8px;
.image-wrapper {
flex: 1;
position: relative;
background-size: cover;
background-repeat: no-repeat;
background-position: center center;
&.rounded-left {
border-top-left-radius: 10px;
}
&.rounded-right {
border-top-right-radius: 10px;
}
}
}
</style>

View File

@@ -26,56 +26,62 @@
<template>
<AttachmentDragAndDrop v-if="card" :card-id="card.id" class="drop-upload--card">
<div :class="{'compact': compactMode, 'current-card': currentCard, 'has-labels': card.labels && card.labels.length > 0, 'is-editing': editing, 'card__editable': canEdit, 'card__archived': card.archived }"
<div :ref="`card${card.id}`"
:class="{'compact': compactMode, 'current-card': currentCard, 'has-labels': card.labels && card.labels.length > 0, 'card__editable': canEdit, 'card__archived': card.archived }"
tag="div"
:tabindex="0"
class="card"
@click="openCard">
@click="openCard"
@keyup.self="handleCardKeyboardShortcut"
@mouseenter="focus(card.id)">
<div v-if="standalone" class="card-related">
<div :style="{backgroundColor: '#' + board.color}" class="board-bullet" />
<div :style="{backgroundColor: '#' + board.color}" class="board-bullet" dir="auto" />
{{ board.title }} » {{ stack.title }}
</div>
<CardCover v-if="showCardCover" :card-id="card.id" />
<div class="card-upper">
<h3 v-if="inlineEditingBlocked">
<h3 v-if="inlineEditingBlocked" dir="auto">
{{ card.title }}
</h3>
<h3 v-else-if="!editing"
tabindex="0"
<h3 v-else
dir="auto"
class="editable"
:aria-label="t('deck', 'Edit card title')"
@keydown.enter.stop.prevent="startEditing(card)">
<span @click.stop="startEditing(card)">{{ card.title }}</span>
:aria-label="t('deck', 'Edit card title')">
<span ref="titleContentEditable"
tabindex="0"
contenteditable="true"
role="textbox"
@focus="onTitleFocus"
@blur="onTitleBlur"
@click.stop
@keyup.esc="cancelEdit"
@keyup.stop>{{ card.title }}</span>
</h3>
<form v-else-if="editing"
v-click-outside="cancelEdit"
class="dragDisabled"
@click.stop
@keyup.esc="cancelEdit"
@submit.prevent="finishedEdit(card)">
<input v-model="copiedCard.title"
v-focus
type="text"
autocomplete="off"
required
pattern=".*\S+.*">
<input type="submit" value="" class="icon-confirm">
</form>
<DueDate v-if="!editing" :card="card" />
<CardMenu v-if="!editing && compactMode" :card="card" class="right" />
<DueDate v-if="compactMode" :card="card" />
<CardMenu v-if="showMenuAtTitle" :card="card" class="right card-menu" />
</div>
<transition-group v-if="card.labels && card.labels.length"
name="zoom"
tag="ul"
class="labels"
@click.stop="openCard">
<li v-for="label in labelsSorted" :key="label.id" :style="labelStyle(label)">
<span @click.stop="applyLabelFilter(label)">{{ label.title }}</span>
</li>
</transition-group>
<div v-show="!compactMode" class="card-controls compact-item" @click="openCard">
<CardBadges :card="card" />
<div v-if="hasLabels" class="card-labels">
<transition-group v-if="card.labels && card.labels.length"
name="zoom"
tag="ul"
class="labels"
@click.stop="openCard">
<li v-for="label in labelsSorted" :key="label.id" :style="labelStyle(label)">
<span @click.stop="applyLabelFilter(label)">{{ label.title }}</span>
</li>
</transition-group>
<CardMenu v-if="showMenuAtLabels" :card="card" class="right" />
</div>
<div v-if="hasBadges"
v-show="!compactMode"
class="card-controls compact-item"
@click="openCard">
<CardBadges :card="card">
<CardMenu v-if="showMenuAtBadges" :card="card" class="right" />
</CardBadges>
</div>
</div>
</AttachmentDragAndDrop>
@@ -89,11 +95,13 @@ import Color from '../../mixins/color.js'
import labelStyle from '../../mixins/labelStyle.js'
import AttachmentDragAndDrop from '../AttachmentDragAndDrop.vue'
import CardMenu from './CardMenu.vue'
import CardCover from './CardCover.vue'
import DueDate from './badges/DueDate.vue'
import { getCurrentUser } from '@nextcloud/auth'
export default {
name: 'CardItem',
components: { CardBadges, AttachmentDragAndDrop, CardMenu, DueDate },
components: { CardBadges, AttachmentDragAndDrop, CardMenu, CardCover, DueDate },
directives: {
ClickOutside,
},
@@ -116,17 +124,12 @@ export default {
default: false,
},
},
data() {
return {
editing: false,
copiedCard: null,
}
},
computed: {
...mapState({
compactMode: state => state.compactMode,
showArchived: state => state.showArchived,
currentBoard: state => state.currentBoard,
showCardCover: state => state.showCardCover,
}),
...mapGetters([
'isArchived',
@@ -145,7 +148,7 @@ export default {
return board ? !board.archived && board.permissions.PERMISSION_EDIT : false
},
inlineEditingBlocked() {
return this.compactMode || this.isArchived || this.showArchived || !this.canEdit || this.standalone
return this.isArchived || this.showArchived || !this.canEdit || this.standalone
},
card() {
return this.item ? this.item : this.$store.getters.cardById(this.id)
@@ -156,6 +159,36 @@ export default {
labelsSorted() {
return [...this.card.labels].sort((a, b) => (a.title < b.title) ? -1 : 1)
},
hasLabels() {
return this.card.labels.length > 0
},
hasBadges() {
return this.card.done
|| this.card.duedate
|| this.idBadge
|| this.card.commentsCount > 0
|| this.card.description
|| this.card.attachmentCount > 0
|| this.card.assignedUsers.length > 0
},
idBadge() {
return this.$store.getters.config('cardIdBadge')
},
showMenuAtTitle() {
return this.compactMode || (!this.compactMode && !this.hasBadges && !this.hasLabels)
},
showMenuAtLabels() {
if (this.compactMode) {
return false
}
return !this.hasBadges && this.hasLabels
},
showMenuAtBadges() {
if (this.compactMode) {
return false
}
return this.hasBadges
},
},
watch: {
currentCard(newValue) {
@@ -163,8 +196,18 @@ export default {
this.$nextTick(() => this.$el.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' }))
}
},
'card.title'(value) {
if (document.activeElement === this.$refs.titleContentEditable || this.$refs.titleContentEditable.textContent === value) {
return
}
this.$refs.titleContentEditable.textContent = value
},
},
methods: {
focus(card) {
card = this.$refs[`card${card}`]
card.focus()
},
openCard() {
if (this.dragging) {
return
@@ -172,18 +215,53 @@ export default {
const boardId = this.card && this.card.boardId ? this.card.boardId : this.$route.params.id
this.$router.push({ name: 'card', params: { id: boardId, cardId: this.card.id } }).catch(() => {})
},
startEditing(card) {
this.copiedCard = Object.assign({}, card)
this.editing = true
},
finishedEdit(card) {
if (this.copiedCard.title !== card.title) {
this.$store.dispatch('updateCardTitle', this.copiedCard)
onTitleBlur(e) {
// TODO Handle empty title
if (e.target.innerText !== this.card.title) {
this.$store.dispatch('updateCardTitle', {
...this.card,
title: e.target.innerText,
})
}
this.editing = false
this.$store.dispatch('toggleShortcutLock', false)
},
onTitleFocus() {
this.$store.dispatch('toggleShortcutLock', true)
},
cancelEdit() {
this.editing = false
this.$refs.titleContentEditable.textContent = this.card.title
this.$store.dispatch('toggleShortcutLock', false)
},
handleCardKeyboardShortcut(key) {
if (OCP.Accessibility.disableKeyboardShortcuts()) {
return
}
if (!this.canEdit || this.$store.state.shortcutLock || key.shiftKey || key.ctrlKey || key.altKey || key.metaKey) {
return
}
switch (key.code) {
case 'KeyE':
this.$refs.titleContentEditable?.focus()
break
case 'KeyA':
this.$store.dispatch('archiveUnarchiveCard', { ...this.card, archived: !this.card.archived })
break
case 'KeyO':
this.$store.dispatch('changeCardDoneStatus', { ...this.card, done: !this.card.done })
break
case 'KeyM':
this.$el.querySelector('button.action-item__menutoggle')?.click()
break
case 'Enter':
case 'Space':
this.openCard().then(() => document.getElementById('app-sidebar-vue')?.focus())
break
case 'KeyS':
this.toggleSelfAsignment()
break
}
},
applyLabelFilter(label) {
if (this.dragging) {
@@ -191,6 +269,18 @@ export default {
}
this.$nextTick(() => this.$store.dispatch('toggleFilter', { tags: [label.id] }))
},
toggleSelfAsignment() {
const isAssigned = this.card.assignedUsers.find(
(item) => item.type === 0 && item.participant.uid === getCurrentUser()?.uid,
)
this.$store.dispatch(isAssigned ? 'removeUserFromCard' : 'assignCardToUser', {
card: this.card,
assignee: {
userId: getCurrentUser()?.uid,
type: 0,
},
})
},
},
}
</script>
@@ -199,62 +289,72 @@ export default {
@import './../../css/animations';
@import './../../css/variables';
@mixin dark-card {
border: 2px solid var(--color-border-dark);
box-shadow: none;
}
.card {
transition: box-shadow 0.1s ease-in-out;
box-shadow: 0 0 2px 0 var(--color-box-shadow);
transition: border 0.1s ease-in-out;
border-radius: var(--border-radius-large);
font-size: 100%;
background-color: var(--color-main-background);
margin-bottom: $card-spacing;
padding: var(--default-grid-baseline) $card-padding;
border: 2px solid var(--color-border);
width: 100%;
display: flex;
flex-direction: column;
gap: 6px;
&:deep(*) {
cursor: pointer;
}
body.dark &, body.theme--dark & {
border: 2px solid var(--color-border);
&.current-card {
border: 2px solid var(--color-primary-element);
}
&:hover {
box-shadow: 0 0 5px 0 var(--color-box-shadow);
}
&.current-card {
box-shadow: 0 0 5px 1px var(--color-box-shadow);
&:focus, &:focus-visible, &:focus-within {
outline: none;
border: 2px solid var(--color-border-maxcontrast);
&.current-card {
border: 2px solid var(--color-primary-element);
}
}
.card-upper {
display: flex;
min-height: 44px;
form {
display: flex;
padding: 3px 5px;
width: 100%;
input[type=text] {
flex-grow: 1;
}
}
h3 {
margin: 5px $card-padding;
margin: 0;
padding: 6px;
flex-grow: 1;
font-size: 100%;
overflow: hidden;
word-wrap: break-word;
padding-left: 4px;
align-self: center;
&.editable {
span {
cursor: text;
padding-right: 8px;
padding-top: 3px;
padding-bottom: 3px;
&:focus, &:focus-visible {
outline: none;
}
}
&:focus {
&:focus-within {
outline: 2px solid var(--color-border-dark);
border-radius: 3px;
}
}
}
input[type=text] {
font-size: 100%;
.card-menu {
height: 44px;
align-self: end;
}
}
@@ -263,13 +363,6 @@ export default {
.card-controls {
display: flex;
margin-left: $card-padding;
margin-right: $card-padding;
& > div {
display: flex;
max-height: 44px;
}
}
&.card__editable .card-controls {
margin-right: 0;
@@ -277,10 +370,16 @@ export default {
&.card__archived {
background-color: var(--color-background-dark);
}
}
.card-labels {
display: flex;
align-items: end;
margin-bottom: var(--default-grid-baseline);
.duedate {
margin-right: 9px;
.labels {
flex-wrap: wrap;
align-self: flex-start;
}
}
}
.right {
@@ -311,6 +410,10 @@ export default {
.duedate {
margin-right: 0;
display: flex;
height: 32px;
width: 32px;
margin-top: 6px;
}
&.has-labels {
padding-bottom: $card-padding;
@@ -326,5 +429,20 @@ export default {
font-size: 0;
color: transparent;
}
.card-menu {
align-self: start !important;
}
}
@media (prefers-color-scheme: dark) {
.card {
@include dark-card;
}
}
@media print {
.card-menu {
display: none;
}
}
</style>

View File

@@ -21,209 +21,24 @@
-->
<template>
<div v-if="card">
<div @click.stop.prevent>
<NcActions>
<NcActionButton v-if="showArchived === false && !isCurrentUserAssigned"
icon="icon-user"
:close-after-click="true"
@click="assignCardToMe()">
{{ t('deck', 'Assign to me') }}
</NcActionButton>
<NcActionButton v-if="showArchived === false && isCurrentUserAssigned"
icon="icon-user"
:close-after-click="true"
@click="unassignCardFromMe()">
{{ t('deck', 'Unassign myself') }}
</NcActionButton>
<NcActionButton icon="icon-external" :close-after-click="true" @click="modalShow=true">
{{ t('deck', 'Move card') }}
</NcActionButton>
<NcActionButton v-for="action in cardActions"
:key="action.label"
:close-after-click="true"
:icon="action.icon"
@click="action.callback(cardRichObject)">
{{ action.label }}
</NcActionButton>
<NcActionButton icon="icon-settings-dark" :close-after-click="true" @click="openCard">
<CardBulletedIcon slot="icon" :size="20" decorative />
{{ t('deck', 'Card details') }}
</NcActionButton>
<NcActionButton :close-after-click="true" @click="archiveUnarchiveCard()">
<template #icon>
<ArchiveIcon :size="20" decorative />
</template>
{{ card.archived ? t('deck', 'Unarchive card') : t('deck', 'Archive card') }}
</NcActionButton>
<NcActionButton v-if="showArchived === false"
icon="icon-delete"
:close-after-click="true"
@click="deleteCard()">
{{ t('deck', 'Delete card') }}
</NcActionButton>
</NcActions>
</div>
<NcModal v-if="modalShow" :title="t('deck', 'Move card to another board')" @close="modalShow=false">
<div class="modal__content">
<h3>{{ t('deck', 'Move card to another board') }}</h3>
<NcMultiselect v-model="selectedBoard"
:placeholder="t('deck', 'Select a board')"
:options="activeBoards"
:max-height="100"
label="title"
@select="loadStacksFromBoard" />
<NcMultiselect v-model="selectedStack"
:placeholder="t('deck', 'Select a list')"
:options="stacksFromBoard"
:max-height="100"
label="title">
<span slot="noOptions">
{{ t('deck', 'List is empty') }}
</span>
</NcMultiselect>
<button :disabled="!isBoardAndStackChoosen" class="primary" @click="moveCard">
{{ t('deck', 'Move card') }}
</button>
<button @click="modalShow=false">
{{ t('deck', 'Cancel') }}
</button>
</div>
</NcModal>
<div v-if="card" class="card-menu" @click.stop.prevent>
<NcActions>
<CardMenuEntries :card="card" />
</NcActions>
</div>
</template>
<script>
import { NcModal, NcActions, NcActionButton, NcMultiselect } from '@nextcloud/vue'
import { mapGetters, mapState } from 'vuex'
import ArchiveIcon from 'vue-material-design-icons/Archive.vue'
import CardBulletedIcon from 'vue-material-design-icons/CardBulleted.vue'
import axios from '@nextcloud/axios'
import { generateUrl } from '@nextcloud/router'
import { getCurrentUser } from '@nextcloud/auth'
import { showUndo } from '@nextcloud/dialogs'
import '@nextcloud/dialogs/dist/index.css'
import { NcActions } from '@nextcloud/vue'
import CardMenuEntries from './CardMenuEntries.vue'
export default {
name: 'CardMenu',
components: { NcActions, NcActionButton, NcModal, NcMultiselect, ArchiveIcon, CardBulletedIcon },
components: { NcActions, CardMenuEntries },
props: {
card: {
type: Object,
default: null,
},
},
data() {
return {
modalShow: false,
selectedBoard: '',
selectedStack: '',
stacksFromBoard: [],
}
},
computed: {
...mapGetters([
'isArchived',
'boards',
'cardActions',
]),
...mapState({
showArchived: state => state.showArchived,
currentBoard: state => state.currentBoard,
}),
canEdit() {
if (this.currentBoard) {
return this.$store.getters.canEdit
}
const board = this.$store.getters.boards.find((item) => item.id === this.card.boardId)
return !!board?.permissions?.PERMISSION_EDIT
},
isBoardAndStackChoosen() {
if (this.selectedBoard === '' || this.selectedStack === '') {
return false
}
return true
},
isCurrentUserAssigned() {
return this.card.assignedUsers.find((item) => item.type === 0 && item.participant.uid === getCurrentUser()?.uid)
},
activeBoards() {
return this.$store.getters.boards.filter((item) => item.deletedAt === 0 && item.archived === false)
},
boardId() {
return this.card?.boardId ? this.card.boardId : this.$route.params.id
},
},
methods: {
openCard() {
const boardId = this.card?.boardId ? this.card.boardId : this.$route.params.id
this.$router.push({ name: 'card', params: { id: boardId, cardId: this.card.id } }).catch(() => {})
},
deleteCard() {
this.$store.dispatch('deleteCard', this.card)
const undoCard = { ...this.card, deletedAt: 0 }
showUndo(t('deck', 'Card deleted'), () => this.$store.dispatch('cardUndoDelete', undoCard))
},
archiveUnarchiveCard() {
this.$store.dispatch('archiveUnarchiveCard', { ...this.card, archived: !this.card.archived })
},
assignCardToMe() {
this.$store.dispatch('assignCardToUser', {
card: this.card,
assignee: {
userId: getCurrentUser()?.uid,
type: 0,
},
})
},
unassignCardFromMe() {
this.$store.dispatch('removeUserFromCard', {
card: this.card,
assignee: {
userId: getCurrentUser()?.uid,
type: 0,
},
})
},
async moveCard() {
this.copiedCard = Object.assign({}, this.card)
this.copiedCard.stackId = this.selectedStack.id
this.$store.dispatch('moveCard', this.copiedCard)
if (parseInt(this.boardId) === parseInt(this.selectedStack.boardId)) {
await this.$store.commit('addNewCard', { ...this.copiedCard })
}
this.modalShow = false
},
async loadStacksFromBoard(board) {
try {
const url = generateUrl('/apps/deck/stacks/' + board.id)
const response = await axios.get(url)
this.stacksFromBoard = response.data
} catch (err) {
return err
}
},
},
}
</script>
<style lang="scss" scoped>
.modal__content {
width: 25vw;
min-width: 250px;
min-height: 120px;
text-align: center;
margin: 20px 20px 100px 20px;
.multiselect {
margin-bottom: 10px;
}
}
.modal__content button {
float: right;
margin-top: 50px;
}
</style>

View File

@@ -0,0 +1,256 @@
<!--
- @copyright Copyright (c) 2018 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/>.
-
-->
<template>
<div>
<NcActionButton v-if="!hideDetailsEntry" :close-after-click="true" @click="openCard">
<CardBulletedIcon slot="icon" :size="20" decorative />
{{ t('deck', 'Card details') }}
</NcActionButton>
<NcActionButton v-if="canEdit && !isCurrentUserAssigned"
icon="icon-user"
:close-after-click="true"
@click="assignCardToMe()">
{{ t('deck', 'Assign to me') }}
</NcActionButton>
<NcActionButton v-if="canEdit && isCurrentUserAssigned"
icon="icon-user"
:close-after-click="true"
@click="unassignCardFromMe()">
{{ t('deck', 'Unassign myself') }}
</NcActionButton>
<NcActionButton v-if="canEdit"
icon="icon-checkmark"
:close-after-click="true"
@click="changeCardDoneStatus()">
{{ card.done ? t('deck', 'Mark as not done') : t('deck', 'Mark as done') }}
</NcActionButton>
<NcActionButton v-if="canEdit"
icon="icon-external"
:close-after-click="true"
@click="modalShow=true">
{{ t('deck', 'Move card') }}
</NcActionButton>
<NcActionButton v-for="action in cardActions"
:key="action.label"
:close-after-click="true"
:icon="action.icon"
@click="action.callback(cardRichObject)">
{{ action.label }}
</NcActionButton>
<NcActionButton v-if="canEditBoard" :close-after-click="true" @click="archiveUnarchiveCard()">
<template #icon>
<ArchiveIcon :size="20" decorative />
</template>
{{ card.archived ? t('deck', 'Unarchive card') : t('deck', 'Archive card') }}
</NcActionButton>
<NcActionButton v-if="canEdit"
icon="icon-delete"
:close-after-click="true"
@click="deleteCard()">
{{ t('deck', 'Delete card') }}
</NcActionButton>
<NcModal v-if="modalShow" :title="t('deck', 'Move card to another board')" @close="modalShow=false">
<div class="modal__content">
<h3>{{ t('deck', 'Move card to another board') }}</h3>
<NcMultiselect v-model="selectedBoard"
:placeholder="t('deck', 'Select a board')"
:options="activeBoards"
:max-height="100"
label="title"
@select="loadStacksFromBoard" />
<NcMultiselect v-model="selectedStack"
:placeholder="t('deck', 'Select a list')"
:options="stacksFromBoard"
:max-height="100"
label="title">
<span slot="noOptions">
{{ t('deck', 'List is empty') }}
</span>
</NcMultiselect>
<button :disabled="!isBoardAndStackChoosen" class="primary" @click="moveCard">
{{ t('deck', 'Move card') }}
</button>
<button @click="modalShow=false">
{{ t('deck', 'Cancel') }}
</button>
</div>
</NcModal>
</div>
</template>
<script>
import { NcModal, NcActionButton, NcMultiselect } from '@nextcloud/vue'
import { mapGetters, mapState } from 'vuex'
import ArchiveIcon from 'vue-material-design-icons/Archive.vue'
import CardBulletedIcon from 'vue-material-design-icons/CardBulleted.vue'
import axios from '@nextcloud/axios'
import { generateUrl } from '@nextcloud/router'
import { getCurrentUser } from '@nextcloud/auth'
import { showUndo } from '@nextcloud/dialogs'
import '@nextcloud/dialogs/dist/index.css'
export default {
name: 'CardMenuEntries',
components: { NcActionButton, NcModal, NcMultiselect, ArchiveIcon, CardBulletedIcon },
props: {
card: {
type: Object,
default: null,
},
hideDetailsEntry: {
type: Boolean,
default: false,
},
},
data() {
return {
modalShow: false,
selectedBoard: '',
selectedStack: '',
stacksFromBoard: [],
}
},
computed: {
...mapGetters([
'isArchived',
'boards',
'cardActions',
'stackById',
'boardById',
]),
...mapState({
showArchived: state => state.showArchived,
currentBoard: state => state.currentBoard,
}),
canEdit() {
return !this.card.archived
},
canEditBoard() {
if (this.currentBoard) {
return this.$store.getters.canEdit
}
const board = this.$store.getters.boards.find((item) => item.id === this.card.boardId)
return !!board?.permissions?.PERMISSION_EDIT
},
isBoardAndStackChoosen() {
if (this.selectedBoard === '' || this.selectedStack === '') {
return false
}
return true
},
isCurrentUserAssigned() {
return this.card.assignedUsers.find((item) => item.type === 0 && item.participant.uid === getCurrentUser()?.uid)
},
activeBoards() {
return this.$store.getters.boards.filter((item) => item.deletedAt === 0 && item.archived === false)
},
boardId() {
return this.card?.boardId ? this.card.boardId : Number(this.$route.params.id)
},
cardRichObject() {
return {
id: '' + this.card.id,
name: this.card.title,
boardname: this.boardById(this.boardId)?.title,
stackname: this.stackById(this.card.stackId)?.title,
link: window.location.protocol + '//' + window.location.host + generateUrl('/apps/deck/') + `card/${this.card.id}`,
}
},
},
methods: {
openCard() {
const boardId = this.card?.boardId ? this.card.boardId : this.$route.params.id
this.$router.push({ name: 'card', params: { id: boardId, cardId: this.card.id } }).catch(() => {})
},
deleteCard() {
this.$store.dispatch('deleteCard', this.card)
const undoCard = { ...this.card, deletedAt: 0 }
showUndo(t('deck', 'Card deleted'), () => this.$store.dispatch('cardUndoDelete', undoCard))
},
changeCardDoneStatus() {
this.$store.dispatch('changeCardDoneStatus', { ...this.card, done: !this.card.done })
},
archiveUnarchiveCard() {
this.$store.dispatch('archiveUnarchiveCard', { ...this.card, archived: !this.card.archived })
},
assignCardToMe() {
this.$store.dispatch('assignCardToUser', {
card: this.card,
assignee: {
userId: getCurrentUser()?.uid,
type: 0,
},
})
},
unassignCardFromMe() {
this.$store.dispatch('removeUserFromCard', {
card: this.card,
assignee: {
userId: getCurrentUser()?.uid,
type: 0,
},
})
},
async moveCard() {
this.copiedCard = Object.assign({}, this.card)
this.copiedCard.stackId = this.selectedStack.id
this.$store.dispatch('moveCard', this.copiedCard)
if (parseInt(this.boardId) === parseInt(this.selectedStack.boardId)) {
await this.$store.commit('addNewCard', { ...this.copiedCard })
}
this.modalShow = false
},
async loadStacksFromBoard(board) {
try {
const url = generateUrl('/apps/deck/stacks/' + board.id)
const response = await axios.get(url)
this.stacksFromBoard = response.data
} catch (err) {
return err
}
},
},
}
</script>
<style lang="scss" scoped>
.modal__content {
width: 25vw;
min-width: 250px;
min-height: 120px;
text-align: center;
margin: 20px 20px 100px 20px;
.multiselect {
margin-bottom: 10px;
}
}
.modal__content button {
float: right;
margin-top: 50px;
}
</style>

View File

@@ -21,20 +21,39 @@
-->
<template>
<div v-if="card" class="duedate">
<div v-if="card" class="duedate" :data-due-state="dueState">
<transition name="zoom">
<div v-if="card.duedate" :class="dueIcon" :title="absoluteDate">
<span>{{ relativeDate }}</span>
<div v-if="card.duedate || card.done" class="due" :title="absoluteDate">
<CheckCircle v-if="card.done" :size="16" />
<Clock v-else-if="overdue" :size="16" />
<ClockOutline v-else :size="16" />
<span v-if="!compactMode" class="due--label">{{ relativeDate }}</span>
</div>
</transition>
</div>
</template>
<script>
import { mapState } from 'vuex'
import moment from '@nextcloud/moment'
import Clock from 'vue-material-design-icons/Clock.vue'
import ClockOutline from 'vue-material-design-icons/ClockOutline.vue'
import CheckCircle from 'vue-material-design-icons/CheckCircle.vue'
const DueState = {
Done: 'Done',
Future: 'Future',
Next: 'Next',
Now: 'Now',
Overdue: 'Overdue',
}
export default {
name: 'DueDate',
components: {
CheckCircle,
Clock,
ClockOutline,
},
props: {
card: {
type: Object,
@@ -42,75 +61,75 @@ export default {
},
},
computed: {
dueIcon() {
...mapState({
compactMode: state => state.compactMode,
}),
dueState() {
if (this.card.done) {
return DueState.Done
}
const days = Math.floor(moment(this.card.duedate).diff(this.$root.time, 'seconds') / 60 / 60 / 24)
if (days < 0) {
return 'icon-calendar due icon overdue'
return DueState.Overdue
}
if (days === 0) {
return 'icon-calendar-dark due icon now'
return DueState.Now
}
if (days === 1) {
return 'icon-calendar-dark due icon next'
return DueState.Next
}
return 'icon-calendar-dark due icon'
return DueState.Future
},
overdue() {
return this.dueState === DueState.Overdue
},
relativeDate() {
const diff = moment(this.$root.time).diff(this.card.duedate, 'seconds')
const date = this.card.done ? this.card.done : this.card.duedate
const diff = moment(this.$root.time).diff(date, 'seconds')
if (diff >= 0 && diff < 45) {
return t('core', 'seconds ago')
}
return moment(this.card.duedate).fromNow()
return moment(date).fromNow()
},
absoluteDate() {
return moment(this.card.duedate).format('L')
const date = this.card.done ? this.card.done : this.card.duedate
return moment(date).format('LLLL')
},
},
}
</script>
<style lang="scss" scoped>
.icon.due {
.due {
background-position: 4px center;
border-radius: 3px;
margin-top: 9px;
margin-bottom: 9px;
padding: 3px 4px;
padding-right: 0;
border-radius: var(--border-radius-pill);
padding: 1px 8px;
font-size: 90%;
display: flex;
align-items: center;
opacity: .5;
flex-shrink: 1;
z-index: 2;
.icon {
background-size: contain;
[data-due-state='Overdue'] & {
color: var(--color-error-text);
background-color: rgba(var(--color-error-rgb), .1);
}
[data-due-state='Now'] & {
color: var(--color-warning-text);
background-color: rgba(var(--color-warning-rgb), .1);
}
[data-due-state='Done'] & {
color: var(--color-success-text);
background-color: rgba(var(--color-success-rgb), .1);
}
&.overdue {
background-color: var(--color-error);
color: var(--color-primary-element-text);
opacity: .7;
padding: 3px 4px;
}
&.now {
background-color: var(--color-warning);
opacity: .7;
padding: 3px 4px;
}
&.next {
background-color: var(--color-background-dark);
opacity: .7;
padding: 3px 4px;
}
&::before,
span {
margin-left: 20px;
.due--label {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
margin-left: 4px;
font-size: 13px;
}
}

View File

@@ -0,0 +1,79 @@
<template>
<a :key="card.id"
:href="cardLink"
target="_blank"
class="card">
<div class="card--header">
<DueDate class="right" :card="card" />
<span class="title" dir="auto">{{ card.title }}</span>
</div>
<ul v-if="card.labels && card.labels.length"
class="labels">
<li v-for="label in card.labels" :key="label.id" :style="labelStyle(label)">
<span dir="auto">{{ label.title }}</span>
</li>
</ul>
</a>
</template>
<script>
import DueDate from '../cards/badges/DueDate.vue'
import { generateUrl } from '@nextcloud/router'
import labelStyle from '../../mixins/labelStyle.js'
export default {
name: 'Card',
components: { DueDate },
mixins: [labelStyle],
props: {
card: {
type: Object,
required: true,
},
},
computed: {
cardLink() {
return generateUrl('/apps/deck') + `#/board/${this.card.boardId}/card/${this.card.id}`
},
},
}
</script>
<style lang="scss" scoped>
@import '../../css/labels';
.card {
display: block;
border-radius: var(--border-radius-large);
padding: 8px;
height: 60px;
&:hover {
background-color: var(--color-background-hover);
}
}
.card--header {
overflow: hidden;
.title {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: block;
}
}
.labels {
margin-left: 0;
}
.duedate:deep(.due) {
margin: 0 0 0 10px;
padding: 2px 4px;
font-size: 90%;
}
.right {
float: right;
}
</style>

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