Compare commits

..

706 Commits

Author SHA1 Message Date
Julius Härtl
0cf40ae9af chore(webpack): Remove outdated config for hmr
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-22 08:05:02 +00:00
Julius Härtl
083db2f3b6 chore(webpack): Move to shared code for entrypoints and use webpack serve public path
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-22 08:05:02 +00:00
Julius Härtl
cfd0fc828f chore(webpack): Add npm run serve command
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-22 08:05:02 +00:00
Nextcloud bot
b0ebb34fb8 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-05-21 00:29:10 +00:00
Nextcloud bot
e72b654bc6 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-05-18 00:29:46 +00:00
dependabot[bot]
d5ae69afce Merge pull request #4698 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/event-bus-3.1.0 2023-05-17 20:40:21 +00:00
dependabot[bot]
5dfe12a302 Merge pull request #4696 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/vue-7.11.6 2023-05-17 20:24:43 +00:00
dependabot[bot]
103a2c8508 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:36 +00:00
dependabot[bot]
4120f2e7ee 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:24 +00:00
Julius Härtl
9f9ef99a31 Merge pull request #4679 from nextcloud/automated/noid/stable25-update-nextcloud-ocp 2023-05-15 08:25:03 +02:00
nextcloud-command
7ce6e1779a chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-05-14 02:55:20 +00:00
dependabot[bot]
5cc075cbf9 Merge pull request #4677 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/vue-7.11.4 2023-05-13 05:10:57 +00:00
dependabot[bot]
150e663283 Chore(deps): Bump @nextcloud/vue from 7.11.2 to 7.11.4
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.11.2 to 7.11.4.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-vue/blob/v7.11.4/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v7.11.2...v7.11.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-05-13 02:38:43 +00:00
Nextcloud bot
2bdaba5c85 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-05-12 02:43:21 +00:00
Julius Härtl
3c3837c8d3 Bump version to 1.8.5
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-11 19:01:50 +02:00
Julius Härtl
c30e253f83 Merge pull request #4667 from nextcloud/backport/4664/stable25 2023-05-11 19:01:07 +02:00
Julius Härtl
c3acf91184 fix: Properly overwrite z-index of datepicker above modal
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-11 13:16:25 +00:00
Julius Härtl
4e513264c5 Bump version to 1.8.4
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-10 15:48:18 +02:00
Nextcloud bot
f470ed4848 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-05-08 02:40:22 +00:00
dependabot[bot]
396b725442 Merge pull request #4653 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/vue-7.11.2 2023-05-06 05:00:35 +00:00
dependabot[bot]
5c8b48faa0 Chore(deps): Bump @nextcloud/vue from 7.10.0 to 7.11.2
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.10.0 to 7.11.2.
- [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.10.0...v7.11.2)

---
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-05-06 03:34:45 +00:00
Julius Härtl
5141d463fc Merge pull request #4645 from nextcloud/backport/4643/stable25
[stable25] fix: Append datetime picker to body to avoid cut off
2023-05-03 13:31:54 +02:00
Julius Härtl
5360b8552e fix: z-index of datepicker in modal
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-03 13:10:08 +02:00
Julius Härtl
c93b837754 Merge pull request #4641 from nextcloud/automated/noid/stable25-fix-npm-audit
[stable25] Fix npm audit
2023-05-03 12:44:58 +02:00
Julius Härtl
9ca7a2fc2c fix: Append datetime picker to body to avoid cut off
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-03 10:41:32 +00:00
nextcloud-command
f5e733362e chore(deps): fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2023-05-03 08:13:44 +00:00
dependabot[bot]
c3697295e6 Merge pull request #4632 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/webpack-vue-config-5.5.1 2023-04-29 04:58:24 +00:00
dependabot[bot]
cffe0f708e Merge pull request #4630 from nextcloud/dependabot/npm_and_yarn/stable25/babel/runtime-7.21.5 2023-04-29 03:37:43 +00:00
dependabot[bot]
ca96096617 Chore(deps-dev): Bump @nextcloud/webpack-vue-config from 5.5.0 to 5.5.1
Bumps [@nextcloud/webpack-vue-config](https://github.com/nextcloud/webpack-vue-config) from 5.5.0 to 5.5.1.
- [Release notes](https://github.com/nextcloud/webpack-vue-config/releases)
- [Changelog](https://github.com/nextcloud/webpack-vue-config/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/webpack-vue-config/compare/v5.5.0...v5.5.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-29 03:21:11 +00:00
dependabot[bot]
baea5d83d3 Chore(deps): Bump @babel/runtime from 7.21.0 to 7.21.5
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.21.0 to 7.21.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.21.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-04-29 01:58:15 +00:00
Nextcloud bot
14e37c4392 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-04-28 02:40:34 +00:00
Julius Härtl
be39fb3b7c Merge pull request #4626 from nextcloud/backport/4622/stable25 2023-04-27 08:57:30 +02:00
Bjoern Schiessle
7a262c5188 forbid changing the displayname or color of the calendar/deck when the user doesn't has the "manage" permissions
Signed-off-by: Bjoern Schiessle <bjoern@nextcloud.com>
2023-04-27 06:43:38 +00:00
Björn Schießle
d97fe80e48 Allow user to toggle visibility of the calendar of deck boards
The calendar object needs to be exposed with "write" properties in order to allow users to hide/show the corresponding calendar in the calendar app. It doesn't has any affects on the general permissions for the whole board or the tasks. As soon as you select a task you jump to the deck app where the normal deck permissions are applied.

fixes: https://github.com/nextcloud/deck/issues/4618

Signed-off-by: Björn Schießle <bjoern@nextcloud.com>
2023-04-27 06:43:38 +00:00
Nextcloud bot
88b4fd0756 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-04-27 02:40:50 +00:00
Julius Härtl
c8878d4497 Merge pull request #4603 from nextcloud/automated/noid/stable25-update-nextcloud-ocp 2023-04-26 16:44:06 +02:00
nextcloud-command
68c1faabaa chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-04-26 11:51:40 +02:00
Julius Härtl
60d8370dbe Merge pull request #4620 from nextcloud/backport/4604/stable25 2023-04-26 11:51:25 +02:00
Jérôme Herbinet
685db5a4fe Following nimishavijay's suggestion
Signed-off-by: Jérôme Herbinet <33763786+Jerome-Herbinet@users.noreply.github.com>

Signed-off-by: Jérôme Herbinet <33763786+Jerome-Herbinet@users.noreply.github.com>
2023-04-25 08:13:37 +00:00
Jérôme Herbinet
c190832287 Better display of card dates
Signed-off-by: Jérôme Herbinet <33763786+Jerome-Herbinet@users.noreply.github.com>

Signed-off-by: Jérôme Herbinet <33763786+Jerome-Herbinet@users.noreply.github.com>
2023-04-25 08:13:37 +00:00
Julius Härtl
2740d2145e Update appbuild.yml
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-04-25 08:28:53 +02:00
Julius Härtl
58ed490c7d Update phpunit.yml
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-04-24 12:51:59 +02:00
Nextcloud bot
372878b318 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-04-23 02:40:56 +00:00
dependabot[bot]
d055b44fa2 Merge pull request #4614 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/router-2.1.1 2023-04-22 06:39:39 +00:00
dependabot[bot]
deb63d4a9a Merge pull request #4613 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/vue-7.10.0 2023-04-22 05:36:03 +00:00
dependabot[bot]
66fda2265d Merge pull request #4608 from nextcloud/dependabot/npm_and_yarn/stable25/relative-ci/agent-4.1.4 2023-04-22 05:08:18 +00:00
dependabot[bot]
44037cfd18 bump @nextcloud/router from 2.0.1 to 2.1.1
---
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-04-22 03:41:41 +00:00
dependabot[bot]
b450d96d4b bump @nextcloud/vue from 7.9.0 to 7.10.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-04-22 03:37:16 +00:00
dependabot[bot]
9f1597a2f3 bump @relative-ci/agent from 4.1.3 to 4.1.4
---
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-04-22 03:08:01 +00:00
Nextcloud bot
a0a929bdec Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-04-19 02:40:49 +00:00
Nextcloud bot
deffd3adaa Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-04-16 02:39:53 +00:00
dependabot[bot]
cd7ade1eaf Merge pull request #4596 from nextcloud/dependabot/npm_and_yarn/stable25/vue/test-utils-1.3.5 2023-04-15 04:46:31 +00:00
dependabot[bot]
e568d79bbe Chore(deps-dev): Bump @vue/test-utils from 1.3.4 to 1.3.5
Bumps [@vue/test-utils](https://github.com/vuejs/test-utils) from 1.3.4 to 1.3.5.
- [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-04-15 01:58:15 +00:00
Nextcloud bot
1ddb3cdac9 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-04-09 02:42:13 +00:00
dependabot[bot]
a982a0dbed Merge pull request #4587 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/vue-7.9.0 2023-04-08 04:44:51 +00:00
dependabot[bot]
bebbb046ea Chore(deps): Bump @nextcloud/vue from 7.8.5 to 7.9.0
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.8.5 to 7.9.0.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-vue/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v7.8.5...v7.9.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-04-08 03:18:32 +00:00
Nextcloud bot
37f305aba2 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-04-06 02:41:14 +00:00
Nextcloud bot
dcc42f7613 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-04-05 02:42:38 +00:00
Julius Härtl
bea851009c Merge pull request #4581 from nextcloud/automated/noid/stable25-update-nextcloud-ocp 2023-04-03 08:15:18 +02:00
nextcloud-command
6a5e72bf6d chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-04-02 03:02:09 +00:00
dependabot[bot]
b5c6b54fab Merge pull request #4577 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/vue-7.8.5 2023-04-01 03:30:50 +00:00
dependabot[bot]
61a801502b Chore(deps): Bump @nextcloud/vue from 7.8.4 to 7.8.5
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.8.4 to 7.8.5.
- [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.8.4...v7.8.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-04-01 01:57:50 +00:00
Jonas
54c5cbbef1 Merge pull request #4568 from nextcloud/backport/4566/stable25
[stable25] Gracefully handle not found card for a share
2023-03-29 11:13:24 +02:00
Jonas
6956551e3c Gracefully handle not found card for a share
Fixes: #3464
Fixes: #4565

Signed-off-by: Jonas <jonas@freesources.org>
2023-03-29 09:00:46 +00:00
Nextcloud bot
62a54481e5 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-03-28 02:31:40 +00:00
Julius Härtl
9d9b333152 Merge pull request #4563 from nextcloud/backport/4561/stable25 2023-03-27 12:08:41 +02:00
Julius Härtl
0179b99f24 fix: Adapt NcEmptyContent usages to new slots
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-03-27 08:52:17 +00:00
Julius Härtl
342003ea2e Merge pull request #4560 from nextcloud/automated/noid/stable25-update-nextcloud-ocp 2023-03-26 11:00:34 +02:00
nextcloud-command
20d4476843 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-03-26 02:59:10 +00:00
dependabot[bot]
cc1b30be54 Merge pull request #4558 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/vue-7.8.4 2023-03-25 04:07:24 +00:00
dependabot[bot]
c1e52fd168 Chore(deps): Bump @nextcloud/vue from 7.8.1 to 7.8.4
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.8.1 to 7.8.4.
- [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.8.1...v7.8.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-03-25 03:59:45 +00:00
Julius Härtl
81d8748e96 Merge pull request #4540 from nextcloud/backport/4487/stable25 2023-03-20 07:16:09 +01:00
Julius Härtl
06e3272b79 Merge pull request #4552 from nextcloud/automated/noid/stable25-update-nextcloud-ocp
[stable25] Update nextcloud/ocp dependency
2023-03-20 07:15:23 +01:00
nextcloud-command
b71d8e2090 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-03-19 03:09:00 +00:00
dependabot[bot]
302ec1c44e Merge pull request #4543 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/webpack-vue-config-5.5.0 2023-03-18 04:36:23 +00:00
dependabot[bot]
28c031a68e Merge pull request #4545 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/vue-7.8.1 2023-03-18 04:33:28 +00:00
dependabot[bot]
b938c3b2bf Chore(deps): Bump @nextcloud/vue from 7.8.0 to 7.8.1
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.8.0 to 7.8.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.8.0...v7.8.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-03-18 02:57:59 +00:00
dependabot[bot]
78fea30e39 Chore(deps-dev): Bump @nextcloud/webpack-vue-config from 5.4.0 to 5.5.0
Bumps [@nextcloud/webpack-vue-config](https://github.com/nextcloud/webpack-vue-config) from 5.4.0 to 5.5.0.
- [Release notes](https://github.com/nextcloud/webpack-vue-config/releases)
- [Changelog](https://github.com/nextcloud/webpack-vue-config/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/webpack-vue-config/compare/v5.4.0...v5.5.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-18 02:57:44 +00:00
Nextcloud bot
fcbc0cf092 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-03-18 02:39:38 +00:00
Julius Härtl
dbdbb00fd5 fix: Use passed userid when getting attachment folder
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-03-17 14:05:08 +00:00
Nextcloud bot
dcccd63864 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-03-17 02:39:08 +00:00
Nextcloud bot
cf52359e7a Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-03-16 02:40:47 +00:00
Julius Härtl
cf7f231047 Merge pull request #4536 from nextcloud/backport/4535/stable25 2023-03-15 15:32:25 +01:00
Jérôme Herbinet
8449d91656 Fix : Overlapping expiry dates on tags
Signed-off-by: Jérôme Herbinet <33763786+Jerome-Herbinet@users.noreply.github.com>

Signed-off-by: Jérôme Herbinet <33763786+Jerome-Herbinet@users.noreply.github.com>
2023-03-15 12:50:19 +00:00
Nextcloud bot
4126e4dd43 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-03-15 02:38:45 +00:00
dependabot[bot]
566778be58 Merge pull request #4528 from nextcloud/dependabot/npm_and_yarn/stable25/jest-29.5.0 2023-03-11 04:36:39 +00:00
dependabot[bot]
063c4cbfef Chore(deps-dev): Bump jest from 29.4.3 to 29.5.0
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 29.4.3 to 29.5.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v29.5.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-03-11 02:57:55 +00:00
Nextcloud bot
8d03a03b27 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-03-10 02:40:07 +00:00
Nextcloud bot
46f76f2dbc Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-03-06 02:39:13 +00:00
dependabot[bot]
9f68a58407 Merge pull request #4503 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/vue-7.8.0 2023-03-04 04:15:41 +00:00
dependabot[bot]
58a5275e78 Merge pull request #4502 from nextcloud/dependabot/npm_and_yarn/stable25/dompurify-2.4.5 2023-03-04 04:07:36 +00:00
dependabot[bot]
c644fc9680 Chore(deps): Bump @nextcloud/vue from 7.7.1 to 7.8.0
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.7.1 to 7.8.0.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-vue/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v7.7.1...v7.8.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-03-04 02:58:18 +00:00
dependabot[bot]
7eb078d0a8 Chore(deps): Bump dompurify from 2.4.4 to 2.4.5
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.4.4 to 2.4.5.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/2.4.4...2.4.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-03-04 02:57:58 +00:00
Nextcloud bot
6126cc53a2 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-03-04 02:40:26 +00:00
Julius Härtl
38344cee55 Merge pull request #4456 from nextcloud/dependabot/npm_and_yarn/stable25/jest-29.4.3 2023-02-27 09:30:15 +01:00
dependabot[bot]
3e0baf9330 Merge pull request #4476 from nextcloud/dependabot/npm_and_yarn/stable25/babel/runtime-7.21.0 2023-02-25 04:12:08 +00:00
dependabot[bot]
2899927efe Merge pull request #4473 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/vue-7.7.1 2023-02-25 04:06:41 +00:00
dependabot[bot]
4ce2265f5e chore(deps): bump @babel/runtime from 7.20.13 to 7.21.0
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.20.13 to 7.21.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.21.0/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-25 02:58:01 +00:00
dependabot[bot]
2872cd39d9 chore(deps): bump @nextcloud/vue from 7.5.0 to 7.7.1
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.5.0 to 7.7.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.5.0...v7.7.1)

---
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-02-25 02:57:49 +00:00
Nextcloud bot
73752472ac Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-02-24 02:42:10 +00:00
Nextcloud bot
508ded19ba Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-02-22 02:34:19 +00:00
Nextcloud bot
57e8698f3b Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-02-21 02:33:45 +00:00
Julius Härtl
abf00984f4 Merge pull request #4464 from nextcloud/automated/noid/stable25-update-nextcloud-ocp 2023-02-20 14:56:51 +01:00
nextcloud-command
b53c10c47d chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-02-19 03:33:35 +00:00
Nextcloud bot
5e2d8ac24a Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-02-19 02:34:27 +00:00
dependabot[bot]
5db87329ac Merge pull request #4461 from nextcloud/dependabot/npm_and_yarn/stable25/dompurify-2.4.4 2023-02-18 05:25:28 +00:00
dependabot[bot]
d12ccc0208 Chore(deps): Bump dompurify from 2.4.3 to 2.4.4
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.4.3 to 2.4.4.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/2.4.3...2.4.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-02-18 04:45:51 +00:00
dependabot[bot]
d67b1e4ba9 Chore(deps-dev): Bump jest from 29.4.2 to 29.4.3
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 29.4.2 to 29.4.3.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v29.4.3/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-02-18 02:57:58 +00:00
Nextcloud bot
81c0e37ba0 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-02-18 02:34:48 +00:00
Nextcloud bot
f44eb87d77 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-02-17 02:33:45 +00:00
Nextcloud bot
55b75e16a0 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-02-16 02:33:28 +00:00
Nextcloud bot
020b16a33d Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-02-15 02:33:33 +00:00
Nextcloud bot
fef75fa169 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-02-14 02:33:22 +00:00
Nextcloud bot
4547e1ae3d Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-02-13 02:32:42 +00:00
Nextcloud bot
0e0ff7e16c Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-02-12 02:33:23 +00:00
dependabot[bot]
6329da3d4d Merge pull request #4444 from nextcloud/dependabot/npm_and_yarn/stable25/jest-29.4.2 2023-02-11 04:39:47 +00:00
dependabot[bot]
c37cae0a5c Merge pull request #4443 from nextcloud/dependabot/npm_and_yarn/stable25/p-queue-7.3.4 2023-02-11 04:33:49 +00:00
dependabot[bot]
9d852b93ce Chore(deps-dev): Bump jest from 29.4.1 to 29.4.2
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 29.4.1 to 29.4.2.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v29.4.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-02-11 02:58:26 +00:00
dependabot[bot]
5035be90f0 Chore(deps): Bump p-queue from 7.3.0 to 7.3.4
Bumps [p-queue](https://github.com/sindresorhus/p-queue) from 7.3.0 to 7.3.4.
- [Release notes](https://github.com/sindresorhus/p-queue/releases)
- [Commits](https://github.com/sindresorhus/p-queue/compare/v7.3.0...v7.3.4)

---
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-02-11 02:58:03 +00:00
Nextcloud bot
6a07581508 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-02-11 02:33:38 +00:00
Nextcloud bot
84b1de5308 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-02-10 02:34:50 +00:00
Nextcloud bot
3533388c37 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-02-07 02:33:10 +00:00
Nextcloud bot
43fa69aa65 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-02-05 02:32:13 +00:00
dependabot[bot]
ab051171ed Merge pull request #4426 from nextcloud/dependabot/npm_and_yarn/stable25/vue-material-design-icons-5.2.0 2023-02-04 03:40:03 +00:00
Nextcloud bot
72de3f257a Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-02-04 02:32:50 +00:00
dependabot[bot]
186fc572b3 Chore(deps): Bump vue-material-design-icons from 5.1.2 to 5.2.0
Bumps [vue-material-design-icons](https://github.com/robcresswell/vue-material-design-icons) from 5.1.2 to 5.2.0.
- [Release notes](https://github.com/robcresswell/vue-material-design-icons/releases)
- [Changelog](https://github.com/robcresswell/vue-material-design-icons/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/robcresswell/vue-material-design-icons/compare/5.1.2...5.2.0)

---
updated-dependencies:
- dependency-name: vue-material-design-icons
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-04 02:01:41 +00:00
Nextcloud bot
ea95fcaaf3 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-02-01 02:32:42 +00:00
Nextcloud bot
e4e474235e Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-31 02:33:57 +00:00
Nextcloud bot
64f406355e Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-30 02:34:11 +00:00
Julius Härtl
d523e4f64e Merge pull request #4415 from nextcloud/automated/noid/stable25-update-nextcloud-ocp 2023-01-29 08:42:08 +01:00
nextcloud-command
81f8423218 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2023-01-29 02:51:14 +00:00
dependabot[bot]
2d1f39eb82 Merge pull request #4408 from nextcloud/dependabot/npm_and_yarn/stable25/babel/runtime-7.20.13 2023-01-28 06:10:59 +00:00
dependabot[bot]
d601b0300b Merge pull request #4407 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/vue-7.5.0 2023-01-28 06:03:41 +00:00
dependabot[bot]
eb8b94328f Merge pull request #4405 from nextcloud/dependabot/npm_and_yarn/stable25/vue/test-utils-1.3.4 2023-01-28 05:48:03 +00:00
dependabot[bot]
e29fc0f320 Merge pull request #4402 from nextcloud/dependabot/npm_and_yarn/stable25/jest-29.4.1 2023-01-28 04:23:19 +00:00
Nextcloud bot
165c8ebc1c Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-28 02:33:40 +00:00
dependabot[bot]
527be16719 Chore(deps): Bump @babel/runtime from 7.20.7 to 7.20.13
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.20.7 to 7.20.13.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.20.13/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-01-28 02:02:33 +00:00
dependabot[bot]
cc86209179 Chore(deps): Bump @nextcloud/vue from 7.4.0 to 7.5.0
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.4.0 to 7.5.0.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-vue/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v7.4.0...v7.5.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-01-28 02:02:17 +00:00
dependabot[bot]
c7de8c4590 Chore(deps-dev): Bump @vue/test-utils from 1.3.3 to 1.3.4
Bumps [@vue/test-utils](https://github.com/vuejs/test-utils) from 1.3.3 to 1.3.4.
- [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-01-28 02:02:01 +00:00
dependabot[bot]
68acd38421 Chore(deps-dev): Bump jest from 29.3.1 to 29.4.1
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 29.3.1 to 29.4.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v29.4.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-01-28 02:01:48 +00:00
Nextcloud bot
54e298d00f Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-25 02:51:29 +00:00
Nextcloud bot
ba20c1a9eb Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-24 02:32:48 +00:00
Nextcloud bot
49cb27d576 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-23 02:32:58 +00:00
Nextcloud bot
7320a48dce Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-22 02:32:40 +00:00
Nextcloud bot
3c834b79f5 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-21 02:32:33 +00:00
Nextcloud bot
4637024240 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-17 02:34:20 +00:00
Nextcloud bot
440f2710f0 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-16 02:32:11 +00:00
dependabot[bot]
0ebd55890c Merge pull request #4380 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/vue-7.4.0 2023-01-14 03:04:29 +00:00
Nextcloud bot
3409a9f13f Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-14 02:33:53 +00:00
dependabot[bot]
7fae8e0928 Chore(deps): Bump @nextcloud/vue from 7.3.0 to 7.4.0
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.3.0 to 7.4.0.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-vue/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v7.3.0...v7.4.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-01-14 02:02:54 +00:00
Nextcloud bot
609c975de4 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-13 02:33:53 +00:00
Nextcloud bot
64615a3e14 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-11 02:32:10 +00:00
Nextcloud bot
fb72a0f24d Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-10 02:33:42 +00:00
Julius Härtl
54c5a7f963 Merge pull request #4371 from nextcloud/automated/noid/stable25-update-nextcloud-ocp 2023-01-09 16:38:21 +01:00
Nextcloud bot
8d46fbbd04 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-09 02:32:08 +00:00
nextcloud-command
0d787f9989 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2023-01-08 02:54:05 +00:00
dependabot[bot]
f19f22737a Merge pull request #4363 from nextcloud/dependabot/npm_and_yarn/stable25/dompurify-2.4.3 2023-01-07 03:02:07 +00:00
Nextcloud bot
687f5c933c Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-07 02:32:13 +00:00
dependabot[bot]
fd95e77d4e Bump dompurify from 2.4.1 to 2.4.3
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.4.1 to 2.4.3.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/2.4.1...2.4.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-07 02:02:45 +00:00
Nextcloud bot
fba52536d0 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-05 02:32:00 +00:00
Nextcloud bot
cfcbc94006 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-04 02:25:29 +00:00
Marcel Klehr
9643f0581e Merge pull request #4353 from nextcloud/deps/noid/nextcloud-vue-7
[stable25] Update @nextcloud/vue to stable releases
2023-01-03 15:04:47 +01:00
Julius Härtl
c02a24f85b chore(deps): Update to @nextcloud/vue 7 stable releases
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-01-03 14:47:34 +01:00
Nextcloud bot
728c7916be Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-03 02:47:14 +00:00
Julius Härtl
1af1c7f581 Bump version to 1.8.3
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-01-02 08:31:59 +01:00
Nextcloud bot
87439dbaad Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-02 03:17:20 +00:00
Nextcloud bot
c79ec72b79 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-01-01 03:01:27 +00:00
Nextcloud bot
beff26500a Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-31 03:20:22 +00:00
dependabot[bot]
6df2e2b755 Merge pull request #4347 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/router-2.0.1 2022-12-30 13:30:46 +00:00
dependabot[bot]
4b793d3738 Bump @nextcloud/router from 2.0.0 to 2.0.1
Bumps [@nextcloud/router](https://github.com/nextcloud/nextcloud-router) from 2.0.0 to 2.0.1.
- [Release notes](https://github.com/nextcloud/nextcloud-router/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-router/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-router/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-30 13:17:58 +00:00
Nextcloud bot
399a85ce9f Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-27 03:13:47 +00:00
dependabot[bot]
673222d37e Merge pull request #4337 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/vue-7.3.0 2022-12-24 05:02:18 +00:00
dependabot[bot]
eced4dd2d3 Merge pull request #4335 from nextcloud/dependabot/npm_and_yarn/stable25/babel/runtime-7.20.7 2022-12-24 04:03:39 +00:00
Nextcloud bot
293f241aa6 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-24 03:39:59 +00:00
dependabot[bot]
5a79c61732 Bump @nextcloud/vue from 7.2.0 to 7.3.0
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.2.0 to 7.3.0.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-vue/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v7.2.0...v7.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-24 02:01:57 +00:00
dependabot[bot]
c28a877d0b Bump @babel/runtime from 7.20.6 to 7.20.7
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.20.6 to 7.20.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.20.7/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-24 02:01:46 +00:00
Nextcloud bot
484b9df8c9 Fix(l10n): 🔠 Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-21 02:38:09 +00:00
Julius Härtl
db7403acc0 Merge pull request #4328 from nextcloud/backport/4315/stable25 2022-12-20 16:46:10 +01:00
Johan Bernhardsson
8c8788eab3 Fix component renaming so that acl works on shares again
Signed-off-by: Johan Bernhardsson <johan.bernhardsson@redpill-linpro.com>
2022-12-19 09:55:54 +00:00
Julius Härtl
0f4ad52ca9 Merge pull request #4326 from nextcloud/automated/noid/stable25-update-nextcloud-ocp
[stable25] Update nextcloud/ocp dependency
2022-12-19 09:37:54 +01:00
nextcloud-command
8b156958f8 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-12-18 04:21:23 +00:00
Nextcloud bot
88ba778e55 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-18 02:27:08 +00:00
dependabot[bot]
192314fb02 Merge pull request #4320 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/axios-2.3.0 2022-12-17 05:25:17 +00:00
dependabot[bot]
0bfb983a1c Bump @nextcloud/axios from 2.2.0 to 2.3.0
Bumps [@nextcloud/axios](https://github.com/nextcloud/nextcloud-axios) from 2.2.0 to 2.3.0.
- [Release notes](https://github.com/nextcloud/nextcloud-axios/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-axios/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-axios/compare/v2.2.0...v2.3.0)

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-10 02:03:17 +00:00
dependabot[bot]
8f822cfd84 Bump @nextcloud/vue from 7.1.0 to 7.2.0
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.1.0 to 7.2.0.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-vue/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v7.1.0...v7.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-10 02:03:07 +00:00
Marcel Klehr
45c19c1c2d Merge pull request #4301 from nextcloud/backport/4194/stable25 2022-12-09 15:46:26 +01:00
Michal Polacik
369749bb46 Permanently delete deck cards marked as deleted after 5 min in a cron job
Limit deleted cards in one cron job run to 500

Converted spaces to tabs

Added missing import for CardMapper class

Added another missing import for CardMapper class

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

Fixed invalid parameter type

Fix DeleteCronTest

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

Fix lint errors

Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2022-12-09 14:38:52 +00:00
Nextcloud bot
5ec04ac670 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-04 02:22:11 +00:00
dependabot[bot]
69b8ed2486 Merge pull request #4290 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/vue-7.1.0 2022-12-03 06:13:59 +00:00
dependabot[bot]
74d8fba022 Merge pull request #4284 from nextcloud/dependabot/npm_and_yarn/stable25/babel/runtime-7.20.6 2022-12-03 04:17:54 +00:00
dependabot[bot]
2ca8863b5d bump @nextcloud/vue from 7.0.1 to 7.1.0
---
updated-dependencies:
- dependency-name: "@nextcloud/vue"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-03 03:52:10 +00:00
dependabot[bot]
63e57f2667 Bump @babel/runtime from 7.20.1 to 7.20.6
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.20.1 to 7.20.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.20.6/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-03 03:00:19 +00:00
Nextcloud bot
165ef3adf6 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-01 02:23:03 +00:00
Nextcloud bot
8ccdc6a2ed [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-30 02:23:26 +00:00
dependabot[bot]
a04f2004bd Merge pull request #4277 from nextcloud/dependabot/npm_and_yarn/stable25/nextcloud/axios-2.2.0 2022-11-26 04:38:08 +00:00
dependabot[bot]
ad00818bd1 Bump @nextcloud/axios from 2.1.0 to 2.2.0
Bumps [@nextcloud/axios](https://github.com/nextcloud/nextcloud-axios) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/nextcloud/nextcloud-axios/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-axios/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-axios/compare/v2.1.0...v2.2.0)

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

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

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

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

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

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

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 19:15:12 +00:00
dependabot[bot]
de6604ad5f Bump @babel/runtime from 7.19.0 to 7.20.1
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.19.0 to 7.20.1.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.20.1/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 19:15:11 +00:00
dependabot[bot]
d4ebfc7ab1 Bump cypress from 10.8.0 to 10.11.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 10.8.0 to 10.11.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v10.8.0...v10.11.0)

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

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

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

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

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

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

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

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

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 19:14:45 +00:00
dependabot[bot]
8def56fd8b Merge pull request #4224 from nextcloud/dependabot/npm_and_yarn/stable25/vue/test-utils-1.3.3 2022-11-18 19:13:47 +00:00
dependabot[bot]
bdbcb236a1 Bump @vue/test-utils from 1.3.0 to 1.3.3
Bumps [@vue/test-utils](https://github.com/vuejs/test-utils) from 1.3.0 to 1.3.3.
- [Release notes](https://github.com/vuejs/test-utils/releases)
- [Commits](https://github.com/vuejs/test-utils/commits)

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

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

Signed-off-by: mokkin <markus@haybach.com>
2022-10-19 19:10:57 +00:00
Julius Härtl
46972646d8 Cache user membership for circles
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-10-19 19:05:47 +00:00
Julius Härtl
8549d4a13f Merge pull request #4140 from nextcloud/backport/4115/stable25 2022-10-19 21:05:00 +02:00
Joas Schilling
47077af838 Fix missing icon for activity rendering
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-19 21:00:47 +02:00
Julius Härtl
6cc589539b Avoid always setting the current time on card updates
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-10-19 18:56:39 +00:00
Marcel Klehr
2237745c09 Fix duedate tests
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2022-10-19 18:56:39 +00:00
Joas Schilling
b74569abef Fix issue with duedate format
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-19 18:56:39 +00:00
Julius Härtl
de67847ef1 Pin postgres to 14
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-10-18 11:29:24 +02:00
Julius Härtl
a430eaf41f Merge pull request #4117 from nextcloud/backport/3439/stable25 2022-10-18 11:26:36 +02:00
Julius Härtl
31b68ae5e5 Activity: Set event link also for notifications that get emitted from activity
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-10-14 10:50:59 +00:00
Julius Härtl
fa1877ef7b Merge pull request #4116 from nextcloud/backport/4113/stable25
[stable25] Fix sorting stacks
2022-10-13 18:50:39 +02:00
Joas Schilling
5851c4a5f1 Fix sorting stacks
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-13 13:27:46 +00:00
Julius Härtl
4fadb9a633 Merge pull request #4105 from nextcloud/fix/25-no-card-menu-without-description 2022-10-11 14:53:32 +02:00
Marcel Klehr
d021559d7c Fix Card menu not displaying when description is not set
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2022-10-07 11:46:25 +02:00
Julius Härtl
7f22925063 Merge pull request #4068 from nextcloud/update-stable25-target-versions
Adjust testing matrix for Nextcloud 25 on stable25
2022-10-02 10:22:32 +02:00
Julien Veyssier
e65fa778cb Merge pull request #4078 from nextcloud/backport/4077/stable25
[stable25] use OCP\Collaboration\Reference\Reference
2022-09-27 10:21:51 +02:00
Julien Veyssier
003ee7a926 use OCP\Collaboration\Reference\Reference instead of the recently removed OC\Collaboration\Reference\Reference
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
2022-09-26 17:48:49 +00:00
Julien Veyssier
8b344a653f Merge pull request #4075 from nextcloud/backport/4069/stable25
[stable25] Reference widget adjustments for Text
2022-09-25 22:29:24 +02:00
Julien Veyssier
7403aafe16 fix width issues
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
2022-09-25 20:23:37 +00:00
Julien Veyssier
f7b6e8a3bc use richtext component for description, adjust style to make it work in Text
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
2022-09-25 20:23:36 +00:00
Julius Härtl
ad051c5e0e Bump version to 1.8.0-beta.2
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-09-23 14:40:50 +02:00
Julius Härtl
7ceb23f7a2 Merge pull request #4072 from nextcloud/backport/4071/stable25
[stable25] Use global import for nextcloud-vue
2022-09-23 12:59:37 +02:00
Julius Härtl
9760c838aa Fix imports
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-09-23 10:00:37 +00:00
Julius Härtl
8002cecda4 Use global import for nextcloud-vue
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-09-23 10:00:37 +00:00
Joas Schilling
27b1c6a2f2 Adjust testing matrix for Nextcloud 25 on stable25
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-09-22 20:31:13 +02:00
Nextcloud bot
af8e61ece6 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-09-22 02:45:46 +00:00
Julius Härtl
f9836d4dfb Merge pull request #4033 from nextcloud/enh/4032/implement-new-dashboard-widget-interfaces 2022-09-21 18:40:31 +02:00
Julius Härtl
982b867a04 Merge pull request #4000 from nextcloud/enh/related-resources 2022-09-21 18:38:11 +02:00
Christopher Ng
a6c9bd5c09 Add related resources panel to board sharing tab sidebar
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2022-09-21 17:35:53 +02:00
Julius Härtl
8008b9d0cb Merge pull request #4056 from nextcloud/fix/4018/reference-card
Fix reference provider when caching
2022-09-21 17:29:59 +02:00
Julius Härtl
7f01db17d0 Merge pull request #4016 from nextcloud/dependencies/bump-nextcloud-vue
Bump @nextcloud/vue to 7.0.0-beta.0
2022-09-21 17:28:46 +02:00
Julius Härtl
9ec44bdadd Fix stylelint
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-09-21 09:01:51 +02:00
Julius Härtl
660290121c Fix some styling issues
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-09-21 09:01:51 +02:00
Julius Härtl
7dab7fad81 Bump @nextcloud/vue to 7.0.0-beta.0
Signed-off-by: Julius Härtl <jus@bitgrid.net>

Bump @nextcloud/vue to 7.0.0-beta.4

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-09-21 09:01:49 +02:00
Nextcloud bot
7b0630143d [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-09-20 02:45:55 +00:00
Julius Härtl
17258783c2 Merge pull request #4064 from nextcloud/dependabot/npm_and_yarn/master/nextcloud/vue-richtext-2.0.1
Bump @nextcloud/vue-richtext from 2.0.0 to 2.0.1
2022-09-19 14:28:13 +02:00
Julius Härtl
9398d86fba Merge pull request #4062 from nextcloud/dependabot/npm_and_yarn/master/cypress-10.8.0
Bump cypress from 10.7.0 to 10.8.0
2022-09-19 09:57:40 +02:00
Julius Härtl
88ef90fce7 Merge pull request #4050 from nextcloud/dependabot/npm_and_yarn/node-forge-1.3.1
Bump node-forge from 0.10.0 to 1.3.1
2022-09-19 08:59:08 +02:00
Julius Härtl
4213ec0986 Merge pull request #4051 from nextcloud/dependabot/github_actions/actions/checkout-3
Bump actions/checkout from 2 to 3
2022-09-19 08:58:52 +02:00
Julius Härtl
f4b2563629 Merge pull request #4052 from nextcloud/dependabot/github_actions/actions/setup-node-3
Bump actions/setup-node from 1 to 3
2022-09-19 08:58:44 +02:00
Nextcloud bot
baf0e0c1f5 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-09-17 02:45:12 +00:00
dependabot[bot]
b888a65b8b Bump @nextcloud/vue-richtext from 2.0.0 to 2.0.1
Bumps [@nextcloud/vue-richtext](https://github.com/nextcloud/vue-richtext) from 2.0.0 to 2.0.1.
- [Release notes](https://github.com/nextcloud/vue-richtext/releases)
- [Changelog](https://github.com/nextcloud/vue-richtext/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/vue-richtext/compare/v2.0.0...v2.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-17 02:12:09 +00:00
dependabot[bot]
a6eda5a0b8 Bump cypress from 10.7.0 to 10.8.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 10.7.0 to 10.8.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/.releaserc.base.js)
- [Commits](https://github.com/cypress-io/cypress/compare/v10.7.0...v10.8.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-17 02:10:49 +00:00
Julien Veyssier
6449082349 fix widget api buttons
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
2022-09-16 13:52:02 +02:00
Julien Veyssier
44127d4bf6 use since param to build widget item list
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
2022-09-16 13:35:22 +02:00
Julien Veyssier
0c95e7ca1e implement IButtonWidget and IIconWidget
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
2022-09-16 13:35:21 +02:00
Julien Veyssier
e29ac75f3d use @nc/vue button in dashboard widget, use material icon inside
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
2022-09-16 13:35:15 +02:00
Julien Veyssier
7dba89a03a implement IAPIWidget interface
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
2022-09-16 13:32:01 +02:00
Nextcloud bot
61d23ddc6f [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-09-16 02:39:35 +00:00
Nextcloud bot
fc921143d3 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-09-15 02:45:07 +00:00
Julien Veyssier
395c79b32a perform deep serialization/sanitizing of reference rich object to avoid caching issues
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
2022-09-14 12:00:30 +02:00
Nextcloud bot
7c683efce6 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-09-14 02:39:52 +00:00
Nextcloud bot
f07eb17dff [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-09-13 02:40:38 +00:00
Julien Veyssier
242906162f Merge pull request #4031 from nextcloud/enh/4018/reference-card
Implement card reference widget
2022-09-12 18:06:57 +02:00
Julien Veyssier
c423f6ecd8 adjust card reference style
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
2022-09-12 17:20:45 +02:00
Julien Veyssier
3c83320c20 implement card reference widget, fix DeckIcon.vue
bring back eslint and stylelint on compilation, fix almost all warnings, ignore some

Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
2022-09-12 17:20:45 +02:00
Nextcloud bot
89068641ee [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-09-12 02:39:40 +00:00
dependabot[bot]
3e46fe777d Bump actions/setup-node from 1 to 3
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 1 to 3.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v1...v3)

---
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>
2022-09-10 04:06:20 +00:00
dependabot[bot]
a73d790a95 Bump actions/checkout from 2 to 3
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.
- [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/v2...v3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-10 04:06:17 +00:00
dependabot[bot]
40b8596275 Merge pull request #4047 from nextcloud/dependabot/npm_and_yarn/master/vue-router-3.6.5 2022-09-10 03:35:03 +00:00
dependabot[bot]
6487ed966f Merge pull request #4045 from nextcloud/dependabot/npm_and_yarn/master/nextcloud/event-bus-3.0.2 2022-09-10 02:33:51 +00:00
dependabot[bot]
c5cb8ed5a7 Bump node-forge from 0.10.0 to 1.3.1
Bumps [node-forge](https://github.com/digitalbazaar/forge) from 0.10.0 to 1.3.1.
- [Release notes](https://github.com/digitalbazaar/forge/releases)
- [Changelog](https://github.com/digitalbazaar/forge/blob/main/CHANGELOG.md)
- [Commits](https://github.com/digitalbazaar/forge/compare/0.10.0...v1.3.1)

---
updated-dependencies:
- dependency-name: node-forge
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-10 02:32:34 +00:00
dependabot[bot]
d7ee3b72a6 Merge pull request #4046 from nextcloud/dependabot/npm_and_yarn/master/babel/runtime-7.19.0 2022-09-10 02:31:46 +00:00
dependabot[bot]
36e2443267 Bump vue-router from 3.6.4 to 3.6.5
Bumps [vue-router](https://github.com/vuejs/router) from 3.6.4 to 3.6.5.
- [Release notes](https://github.com/vuejs/router/releases)
- [Commits](https://github.com/vuejs/router/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-10 01:03:29 +00:00
dependabot[bot]
2c1b95a3cb Bump @babel/runtime from 7.18.9 to 7.19.0
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.18.9 to 7.19.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.19.0/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-10 01:03:07 +00:00
dependabot[bot]
0628624edf Bump @nextcloud/event-bus from 3.0.0 to 3.0.2
Bumps [@nextcloud/event-bus](https://github.com/nextcloud/nextcloud-event-bus) from 3.0.0 to 3.0.2.
- [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.0...v3.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-10 01:02:46 +00:00
Nextcloud bot
2bd854ff18 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-09-09 02:40:38 +00:00
Nextcloud bot
18b6ed080c [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-09-08 02:40:30 +00:00
Julien Veyssier
5010f0e0e1 Merge pull request #4036 from nextcloud/fix/4035/show-attachment-creator-displayname
Fix attachment creator name: show display name
2022-09-07 18:05:27 +02:00
Julien Veyssier
82c7145163 fix tests
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
2022-09-07 17:41:51 +02:00
Julien Veyssier
cb60e70ae9 refs #4035 fix attachment creator name: show display name instead of user id
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
2022-09-07 16:53:51 +02:00
Nextcloud bot
f8a255a9f0 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-09-07 02:39:58 +00:00
Nextcloud bot
38040cc246 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-09-06 02:39:36 +00:00
Nextcloud bot
0961bf088f [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-09-05 02:38:57 +00:00
Nextcloud bot
76afb87624 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-09-04 02:37:59 +00:00
dependabot[bot]
8dc8513263 Merge pull request #4029 from nextcloud/dependabot/composer/phpunit/phpunit-9.5.24 2022-09-03 07:39:09 +00:00
dependabot[bot]
4d3f2bf1e4 Merge pull request #4028 from nextcloud/dependabot/composer/vimeo/psalm-4.27.0 2022-09-03 07:32:43 +00:00
dependabot[bot]
4c82154eb0 Merge pull request #4024 from nextcloud/dependabot/npm_and_yarn/master/relative-ci/agent-4.1.0 2022-09-03 05:42:10 +00:00
dependabot[bot]
858334cc64 Bump phpunit/phpunit from 9.5.23 to 9.5.24
Bumps [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit) from 9.5.23 to 9.5.24.
- [Release notes](https://github.com/sebastianbergmann/phpunit/releases)
- [Changelog](https://github.com/sebastianbergmann/phpunit/blob/main/ChangeLog-9.5.md)
- [Commits](https://github.com/sebastianbergmann/phpunit/compare/9.5.23...9.5.24)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-03 02:53:20 +00:00
dependabot[bot]
7bb02a9b63 Bump vimeo/psalm from 4.26.0 to 4.27.0
Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 4.26.0 to 4.27.0.
- [Release notes](https://github.com/vimeo/psalm/releases)
- [Commits](https://github.com/vimeo/psalm/compare/4.26.0...4.27.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>
2022-09-03 02:52:44 +00:00
Nextcloud bot
1551cdf517 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-09-03 02:44:33 +00:00
dependabot[bot]
8a8a1ac060 Bump @relative-ci/agent from 4.0.0 to 4.1.0
Bumps [@relative-ci/agent](https://github.com/relative-ci/agent) from 4.0.0 to 4.1.0.
- [Release notes](https://github.com/relative-ci/agent/releases)
- [Commits](https://github.com/relative-ci/agent/compare/v4.0.0...v4.1.0)

---
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>
2022-09-03 02:05:54 +00:00
dependabot[bot]
123e43e626 Merge pull request #4021 from nextcloud/dependabot/npm_and_yarn/master/cypress-10.7.0 2022-09-03 02:04:54 +00:00
dependabot[bot]
03e54ffdff Bump cypress from 10.6.0 to 10.7.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 10.6.0 to 10.7.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/.releaserc.base.js)
- [Commits](https://github.com/cypress-io/cypress/compare/v10.6.0...v10.7.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-03 01:03:27 +00:00
Julius Härtl
c897074cb3 Clarify that board deletion also includes archived cards
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-09-02 14:59:06 +02:00
Julius Härtl
03fa4dc816 Merge pull request #4014 from nextcloud/create-no-stack 2022-09-02 13:12:21 +02:00
Nextcloud bot
3ea4c635d0 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-09-01 02:50:05 +00:00
Luka Trovic
78ed0852ea Merge pull request #4013 from nextcloud/release/1.8.0-beta.1
release/1.8.0-beta.1
2022-08-30 14:51:20 +02:00
Robin Appelman
89d46dcab4 disable Create card button while no stack is chosen
make the `isBoardAndStackChoosen` method do what it says

Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-08-30 14:40:49 +02:00
Luka Trovic
411626c038 changes for 1.8.0-beta.1
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2022-08-30 14:34:02 +02:00
Julius Härtl
56e3215785 Merge pull request #3983 from nextcloud/perf/sharing
Simpify query for getting shared files
2022-08-29 11:02:09 +02:00
Julius Härtl
b81f55057a Fix phpunit install version
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-08-28 20:51:22 +02:00
Julius Härtl
e2dc1c2684 Simplify fetching boards during sharing
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-08-28 20:51:22 +02:00
Julius Härtl
e2c5367050 Avoid duplicate code
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-08-28 20:51:22 +02:00
dependabot[bot]
15c48b919d Merge pull request #4008 from nextcloud/dependabot/npm_and_yarn/master/dompurify-2.4.0 2022-08-28 17:43:57 +00:00
dependabot[bot]
7ad36b07b1 Merge pull request #3975 from nextcloud/dependabot/npm_and_yarn/master/nextcloud/stylelint-config-2.2.0 2022-08-28 17:43:33 +00:00
dependabot[bot]
85dbb18663 Bump @nextcloud/stylelint-config from 2.1.2 to 2.2.0
Bumps [@nextcloud/stylelint-config](https://github.com/nextcloud/stylelint-config) from 2.1.2 to 2.2.0.
- [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.1.2...v2.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-28 19:38:11 +02:00
dependabot[bot]
a712be416e Merge pull request #4006 from nextcloud/dependabot/npm_and_yarn/master/vue-router-3.6.4 2022-08-28 16:49:58 +00:00
Julius Härtl
2246e12a6a Merge pull request #4004 from nextcloud/dependabot/composer/phpunit/phpunit-9.5.23
Bump phpunit/phpunit from 9.5.21 to 9.5.23
2022-08-28 18:43:35 +02:00
dependabot[bot]
0975eb7d78 Bump vue-router from 3.5.4 to 3.6.4
Bumps [vue-router](https://github.com/vuejs/router) from 3.5.4 to 3.6.4.
- [Release notes](https://github.com/vuejs/router/releases)
- [Commits](https://github.com/vuejs/router/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-28 18:43:06 +02:00
dependabot[bot]
f4610dc6eb Bump dompurify from 2.3.10 to 2.4.0
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.3.10 to 2.4.0.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/2.3.10...2.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-28 18:42:49 +02:00
dependabot[bot]
df5b2abf21 Merge pull request #3988 from nextcloud/dependabot/npm_and_yarn/master/cypress-10.6.0 2022-08-28 16:26:30 +00:00
dependabot[bot]
e865627158 Bump cypress from 10.4.0 to 10.6.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 10.4.0 to 10.6.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/.releaserc.base.js)
- [Commits](https://github.com/cypress-io/cypress/compare/v10.4.0...v10.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>
2022-08-28 16:19:18 +00:00
Julius Härtl
fdd6b78fa8 Merge pull request #4005 from nextcloud/dependabot/npm_and_yarn/master/jest-29.0.1
Bump jest from 28.1.3 to 29.0.1
2022-08-28 18:18:12 +02:00
Julius Härtl
58db7712ea Merge pull request #4007 from nextcloud/dependabot/npm_and_yarn/master/nextcloud/initial-state-2.0.0
Bump @nextcloud/initial-state from 1.2.1 to 2.0.0
2022-08-28 18:17:54 +02:00
dependabot[bot]
325ec9ae55 Bump jest from 28.1.3 to 29.0.1
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 28.1.3 to 29.0.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v29.0.1/packages/jest)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-28 13:42:20 +00:00
dependabot[bot]
935a2a240d Bump @nextcloud/initial-state from 1.2.1 to 2.0.0
Bumps [@nextcloud/initial-state](https://github.com/nextcloud/nextcloud-initial-state) from 1.2.1 to 2.0.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/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-28 13:42:04 +00:00
Julius Härtl
a0ca4f0a33 Merge pull request #3991 from nextcloud/depenendencies/nextcloud-vue-6 2022-08-28 14:45:31 +02:00
Julius Härtl
a0c47f8115 Some cypress test cleanup and fixes
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-08-28 14:37:11 +02:00
Nextcloud bot
957776871d [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-08-28 02:36:30 +00:00
Nextcloud bot
fe7d318f3d [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-08-27 02:36:42 +00:00
dependabot[bot]
b8155835b6 Bump phpunit/phpunit from 9.5.21 to 9.5.23
Bumps [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit) from 9.5.21 to 9.5.23.
- [Release notes](https://github.com/sebastianbergmann/phpunit/releases)
- [Changelog](https://github.com/sebastianbergmann/phpunit/blob/main/ChangeLog-9.5.md)
- [Commits](https://github.com/sebastianbergmann/phpunit/compare/9.5.21...9.5.23)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-27 01:00:52 +00:00
Julius Härtl
74d9e63888 Use proper type for size prop
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-08-26 12:45:46 +02:00
Julius Härtl
7c5601eed6 Bump to beta.4
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-08-26 12:42:07 +02:00
Julius Härtl
49acc1a88f Small styling fix for the controls bar
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-08-26 12:41:09 +02:00
Julius Härtl
f072b06b81 Update vue
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-08-26 12:41:09 +02:00
Julius Härtl
4be99a93c8 Bump to @nextcloud/vue@6.0.0-beta.3
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-08-26 12:41:08 +02:00
Nextcloud bot
e761c9aec9 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-08-24 02:39:39 +00:00
Julius Härtl
1032e8fb06 Merge pull request #3989 from nextcloud/dependabot/github_actions/shivammathur/setup-php-2.21.2 2022-08-22 17:51:09 +02:00
Nextcloud bot
36d9cd1c76 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-08-22 02:37:12 +00:00
Nextcloud bot
281dcf464e [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-08-21 02:36:33 +00:00
Nextcloud bot
90bed2da26 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-08-20 02:36:56 +00:00
dependabot[bot]
ba1f1a99ed Bump shivammathur/setup-php from 2.21.1 to 2.21.2
Bumps [shivammathur/setup-php](https://github.com/shivammathur/setup-php) from 2.21.1 to 2.21.2.
- [Release notes](https://github.com/shivammathur/setup-php/releases)
- [Commits](https://github.com/shivammathur/setup-php/compare/2.21.1...2.21.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>
2022-08-20 01:05:11 +00:00
Marcel Klehr
cdd838cffe Merge pull request #3986 from nextcloud/fix/a11y 2022-08-19 11:44:42 +02:00
Marcel Klehr
d1997c0f65 Add a11y label for sidebar button
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2022-08-19 11:35:12 +02:00
Julius Härtl
1cfc20365e Merge pull request #3984 from nextcloud/enh/hide-projects 2022-08-18 10:42:36 +02:00
Christopher Ng
ed8877ca6b Hide deprecated projects in sidebar and card details by default
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2022-08-18 01:59:06 +00:00
Vincent Petry
de0dc2782f Merge pull request #3982 from nextcloud/performance/dav
Improve CalDAV integration performance
2022-08-17 16:13:27 +02:00
Julius Härtl
e33dd1527f Merge pull request #3980 from nextcloud/bugfix/noid/permission-cache 2022-08-17 12:12:09 +02:00
Julius Härtl
9171ffc88a Avoid fetching archived cards for calendars
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-08-17 11:33:27 +02:00
Julius Härtl
eb65468382 Avoid querying each card when getting the calendars only
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-08-17 11:28:24 +02:00
Julius Härtl
7c40172c40 Use capped memory cache for board permissions
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-08-16 16:06:40 +02:00
Julius Härtl
ab48cccefc Merge pull request #3972 from nextcloud/dependabot/npm_and_yarn/master/nextcloud/auth-2.0.0
Bump @nextcloud/auth from 1.3.0 to 2.0.0
2022-08-13 17:20:32 +02:00
dependabot[bot]
1b38ebe89e Bump @nextcloud/auth from 1.3.0 to 2.0.0
Bumps [@nextcloud/auth](https://github.com/nextcloud/nextcloud-auth) from 1.3.0 to 2.0.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/v1.3.0...v2.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-13 14:34:35 +00:00
Julius Härtl
c235f05340 Merge pull request #3967 from nextcloud/dependabot/npm_and_yarn/master/nextcloud/axios-2.0.0
Bump @nextcloud/axios from 1.10.0 to 2.0.0
2022-08-13 16:33:36 +02:00
dependabot[bot]
3a7219a94f Bump @nextcloud/axios from 1.10.0 to 2.0.0
Bumps [@nextcloud/axios](https://github.com/nextcloud/nextcloud-axios) from 1.10.0 to 2.0.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/v1.10.0...v2.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-13 12:38:39 +00:00
Julius Härtl
accff8c8b6 Merge pull request #3971 from nextcloud/dependabot/npm_and_yarn/master/nextcloud/event-bus-3.0.0 2022-08-13 14:37:42 +02:00
dependabot[bot]
9a9ac07ab2 Merge pull request #3973 from nextcloud/dependabot/npm_and_yarn/master/nextcloud/webpack-vue-config-5.3.0 2022-08-13 11:56:30 +00:00
dependabot[bot]
2d6433ab4d Merge pull request #3974 from nextcloud/dependabot/npm_and_yarn/master/vue-at-2.5.0 2022-08-13 06:45:35 +00:00
dependabot[bot]
937d93894a Bump @nextcloud/event-bus from 2.1.1 to 3.0.0
Bumps [@nextcloud/event-bus](https://github.com/nextcloud/nextcloud-event-bus) from 2.1.1 to 3.0.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/v2.1.1...v3.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-13 05:12:26 +00:00
dependabot[bot]
fc122027cb Merge pull request #3970 from nextcloud/dependabot/npm_and_yarn/master/nextcloud/dialogs-3.2.0 2022-08-13 05:11:28 +00:00
dependabot[bot]
1e790b7a20 Bump @nextcloud/webpack-vue-config from 5.2.1 to 5.3.0
Bumps [@nextcloud/webpack-vue-config](https://github.com/nextcloud/webpack-vue-config) from 5.2.1 to 5.3.0.
- [Release notes](https://github.com/nextcloud/webpack-vue-config/releases)
- [Changelog](https://github.com/nextcloud/webpack-vue-config/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/webpack-vue-config/compare/v5.2.1...v5.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-13 04:34:50 +00:00
dependabot[bot]
33dcef981a Merge pull request #3969 from nextcloud/dependabot/npm_and_yarn/master/nextcloud/browserslist-config-2.3.0 2022-08-13 04:33:31 +00:00
dependabot[bot]
1c59fd7ed3 Merge pull request #3968 from nextcloud/dependabot/npm_and_yarn/master/markdown-it-link-attributes-4.0.1 2022-08-13 03:51:36 +00:00
Nextcloud bot
4d559d4094 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-08-13 02:37:48 +00:00
dependabot[bot]
96b852a0e7 Bump vue-at from 2.5.0-beta.2 to 2.5.0
Bumps [vue-at](https://github.com/fritx/vue-at) from 2.5.0-beta.2 to 2.5.0.
- [Release notes](https://github.com/fritx/vue-at/releases)
- [Commits](https://github.com/fritx/vue-at/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-13 02:14:26 +00:00
dependabot[bot]
aacf6b5d52 Bump @nextcloud/dialogs from 3.1.4 to 3.2.0
Bumps [@nextcloud/dialogs](https://github.com/nextcloud/nextcloud-dialogs) from 3.1.4 to 3.2.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/v3.1.4...v3.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>
2022-08-13 01:03:46 +00:00
dependabot[bot]
2573b5728c Bump @nextcloud/browserslist-config from 2.2.0 to 2.3.0
Bumps [@nextcloud/browserslist-config](https://github.com/nextcloud/browserslist-config) from 2.2.0 to 2.3.0.
- [Release notes](https://github.com/nextcloud/browserslist-config/releases)
- [Commits](https://github.com/nextcloud/browserslist-config/compare/v2.2.0...v2.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-13 01:03:30 +00:00
dependabot[bot]
9eb2c04a26 Bump markdown-it-link-attributes from 4.0.0 to 4.0.1
Bumps [markdown-it-link-attributes](https://github.com/crookedneighbor/markdown-it-link-attributes) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/crookedneighbor/markdown-it-link-attributes/releases)
- [Changelog](https://github.com/crookedneighbor/markdown-it-link-attributes/blob/main/CHANGELOG.md)
- [Commits](https://github.com/crookedneighbor/markdown-it-link-attributes/compare/v4.0.0...v4.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-13 01:03:14 +00:00
Nextcloud bot
71b19be030 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-08-12 02:36:54 +00:00
Nextcloud bot
73c5127088 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-08-09 02:36:35 +00:00
dependabot[bot]
a8831b2c9e Merge pull request #3956 from nextcloud/dependabot/npm_and_yarn/master/nextcloud/vue-5.4.0 2022-08-08 04:55:20 +00:00
dependabot[bot]
d8a40611f8 Bump @nextcloud/vue from 5.3.1 to 5.4.0
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 5.3.1 to 5.4.0.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-vue/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v5.3.1...v5.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-07 19:17:54 +00:00
dependabot[bot]
762afcfc21 Merge pull request #3955 from nextcloud/dependabot/npm_and_yarn/master/cypress-10.4.0 2022-08-07 19:16:47 +00:00
dependabot[bot]
6b0e5ae392 Bump cypress from 10.3.1 to 10.4.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 10.3.1 to 10.4.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/.releaserc.base.js)
- [Commits](https://github.com/cypress-io/cypress/compare/v10.3.1...v10.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>
2022-08-07 19:11:58 +00:00
dependabot[bot]
660621bffb Merge pull request #3954 from nextcloud/dependabot/composer/vimeo/psalm-4.26.0 2022-08-07 19:04:06 +00:00
dependabot[bot]
ba64441619 Bump vimeo/psalm from 4.25.0 to 4.26.0
Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 4.25.0 to 4.26.0.
- [Release notes](https://github.com/vimeo/psalm/releases)
- [Commits](https://github.com/vimeo/psalm/compare/4.25.0...4.26.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>
2022-08-07 17:51:08 +00:00
max-nextcloud
d63234f385 Merge pull request #3957 from nextcloud/fix/cypress-login
cy: fix login submit selector for current server
2022-08-07 19:35:55 +02:00
Julius Härtl
bd4223c721 Merge pull request #3958 from nextcloud/feat/package-node-npm-engines-update
Update npm and node engines versions
2022-08-07 14:06:40 +02:00
Nextcloud bot
5cbdbc7520 Update npm and node engines versions
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-08-07 07:22:28 +00:00
Max
5c95b5ac98 cy: fix login submit selector for current server
Made the selector flexible enough to still work with the old.

Signed-off-by: Max <max@nextcloud.com>
2022-08-07 08:12:13 +02:00
Nextcloud bot
ef1800c50a [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-08-07 02:40:57 +00:00
Nextcloud bot
5c2a6d6f7c [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-08-06 02:37:33 +00:00
Julius Härtl
acdff604e4 Merge pull request #3952 from nextcloud/bugfix/noid/attachment-folder-cron
Fetch attachment folder for the correct user during cron job
2022-08-05 17:04:28 +02:00
Julius Härtl
0aff6c1561 Merge pull request #3953 from nextcloud/feat/workflow-auto-update-dependabot-approve-merge.yml
Updating dependabot-approve-merge.yml workflow from template
2022-08-05 17:03:26 +02:00
Nextcloud bot
6c556263c6 Updating dependabot-approve-merge.yml workflow from template
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-08-05 12:51:52 +00:00
Julius Härtl
e639456a82 Fetch attachment folder for the correct user during cron job
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-08-05 13:20:41 +02:00
Nextcloud bot
5dedf7bec3 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-08-05 02:13:40 +00:00
Nextcloud bot
cb8ef37c79 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-08-03 02:13:41 +00:00
Julius Härtl
ae499d513a Update README.md
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-08-02 12:11:59 +02:00
Julius Härtl
507c80afc7 Merge pull request #3946 from nextcloud/dependabot/npm_and_yarn/master/p-queue-7.3.0 2022-08-01 11:14:04 +02:00
Julius Härtl
3d02cacc4d Merge pull request #3945 from nextcloud/dependabot/npm_and_yarn/master/relative-ci/agent-4.0.0 2022-08-01 11:13:00 +02:00
Julius Härtl
f9e96922eb Merge pull request #3944 from nextcloud/dependabot/composer/vimeo/psalm-4.25.0 2022-07-30 10:24:23 +02:00
Julius Härtl
791239eabb Merge pull request #3947 from nextcloud/dependabot/github_actions/shivammathur/setup-php-2.21.1 2022-07-30 10:24:05 +02:00
dependabot[bot]
4c72f6d1fb Bump shivammathur/setup-php from 2.21.0 to 2.21.1
Bumps [shivammathur/setup-php](https://github.com/shivammathur/setup-php) from 2.21.0 to 2.21.1.
- [Release notes](https://github.com/shivammathur/setup-php/releases)
- [Commits](https://github.com/shivammathur/setup-php/compare/2.21.0...2.21.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>
2022-07-30 01:05:06 +00:00
dependabot[bot]
34e3310669 Bump p-queue from 7.2.0 to 7.3.0
Bumps [p-queue](https://github.com/sindresorhus/p-queue) from 7.2.0 to 7.3.0.
- [Release notes](https://github.com/sindresorhus/p-queue/releases)
- [Commits](https://github.com/sindresorhus/p-queue/compare/v7.2.0...v7.3.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>
2022-07-30 01:02:31 +00:00
dependabot[bot]
4bd45d1f5b Bump @relative-ci/agent from 3.1.3 to 4.0.0
Bumps [@relative-ci/agent](https://github.com/relative-ci/agent) from 3.1.3 to 4.0.0.
- [Release notes](https://github.com/relative-ci/agent/releases)
- [Commits](https://github.com/relative-ci/agent/compare/v3.1.3...v4.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-30 01:02:30 +00:00
dependabot[bot]
55d02d4955 Bump vimeo/psalm from 4.24.0 to 4.25.0
Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 4.24.0 to 4.25.0.
- [Release notes](https://github.com/vimeo/psalm/releases)
- [Commits](https://github.com/vimeo/psalm/compare/4.24.0...v4.25.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>
2022-07-30 01:01:14 +00:00
Julius Härtl
f5fd8c9fe5 Merge pull request #3942 from nextcloud/bugfix/noid/fix-share-provider
Fix share provider for master changes
2022-07-29 22:42:14 +02:00
Joas Schilling
ff39027869 Fix share provider for master changes
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-07-29 10:27:25 +02:00
Nextcloud bot
3b1bae3775 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-07-29 02:13:32 +00:00
Nextcloud bot
ef0dde23d0 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-07-28 02:13:38 +00:00
Julius Härtl
512537afe5 Merge pull request #3939 from nextcloud/bugfix/noid/icon-deck
Invert icons properly in dark mode
2022-07-27 13:27:11 +02:00
Nextcloud bot
e85782da4d [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-07-27 02:13:36 +00:00
dependabot[bot]
d86a10af32 Merge pull request #3936 from nextcloud/dependabot/github_actions/shivammathur/setup-php-2.21.0 2022-07-26 15:13:14 +00:00
Julius Härtl
ceab78e2d8 Merge pull request #3862 from mstolf/bugfix/3861/inserted-required-property-in-rename-list-field
Inserted required property in the rename list field, to prevent the l…
2022-07-26 16:59:30 +02:00
dependabot[bot]
11afab61d7 Bump shivammathur/setup-php from 2.20.1 to 2.21.0
Bumps [shivammathur/setup-php](https://github.com/shivammathur/setup-php) from 2.20.1 to 2.21.0.
- [Release notes](https://github.com/shivammathur/setup-php/releases)
- [Commits](https://github.com/shivammathur/setup-php/compare/2.20.1...2.21.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>
2022-07-26 16:55:13 +02:00
Julius Härtl
801e691011 Merge pull request #3927 from nextcloud/dependabot/npm_and_yarn/terser-5.14.2 2022-07-26 16:55:05 +02:00
Julius Härtl
b3f7c648db Merge pull request #3932 from nextcloud/dependabot/npm_and_yarn/master/babel/runtime-7.18.9 2022-07-26 16:54:59 +02:00
Julius Härtl
3842950309 Merge pull request #3937 from nextcloud/dependabot/npm_and_yarn/master/dompurify-2.3.10 2022-07-26 16:54:46 +02:00
Julius Härtl
57ef6f02bc Invert icons properly in dark mode
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-07-26 16:16:53 +02:00
Julius Härtl
ffb916a48a Merge pull request #3938 from nextcloud/tests/isimplefile 2022-07-26 16:16:41 +02:00
Julius Härtl
3f78ee72b4 Merge pull request #3803 from nextcloud/bugfix/noid/icon-css
SCSS cleanup
2022-07-25 19:51:01 +02:00
Julius Härtl
2d41ce0ae7 Fix tests running against 25 with adjusted ISimpleFile methods
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-07-25 19:48:27 +02:00
Julius Härtl
484a47e0fd Merge pull request #3933 from nextcloud/dependabot/npm_and_yarn/master/nextcloud/dialogs-3.1.4
Bump @nextcloud/dialogs from 3.1.2 to 3.1.4
2022-07-25 09:13:39 +02:00
dependabot[bot]
09d67f1c05 Bump dompurify from 2.3.9 to 2.3.10
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.3.9 to 2.3.10.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/2.3.9...2.3.10)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 09:13:23 +02:00
Julius Härtl
167ca9a595 Merge pull request #3935 from nextcloud/dependabot/npm_and_yarn/master/cypress-10.3.1
Bump cypress from 10.3.0 to 10.3.1
2022-07-25 07:53:49 +02:00
Julius Härtl
6d9df29a4e Merge pull request #3934 from nextcloud/dependabot/npm_and_yarn/master/vue-and-vue-template-compiler-2.7.8
Bump vue and vue-template-compiler
2022-07-25 07:51:00 +02:00
Nextcloud bot
5ef7ca7723 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-07-25 02:39:08 +00:00
Nextcloud bot
bac0313d7c [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-07-24 02:40:46 +00:00
Nextcloud bot
af64824733 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-07-23 02:38:33 +00:00
dependabot[bot]
ad490ce006 Bump cypress from 10.3.0 to 10.3.1
Bumps [cypress](https://github.com/cypress-io/cypress) from 10.3.0 to 10.3.1.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/.releaserc.base.js)
- [Commits](https://github.com/cypress-io/cypress/compare/v10.3.0...v10.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>
2022-07-23 01:03:36 +00:00
dependabot[bot]
ff4de2c77b 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.6 to 2.7.8
- [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.6 to 2.7.8
- [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.6...v2.7.8)

---
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>
2022-07-23 01:03:24 +00:00
dependabot[bot]
bc542aad12 Bump @nextcloud/dialogs from 3.1.2 to 3.1.4
Bumps [@nextcloud/dialogs](https://github.com/nextcloud/nextcloud-dialogs) from 3.1.2 to 3.1.4.
- [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/v3.1.2...v3.1.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-23 01:03:23 +00:00
dependabot[bot]
1211077dc8 Bump @babel/runtime from 7.18.6 to 7.18.9
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.18.6 to 7.18.9.
- [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.18.9/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-23 01:02:10 +00:00
Julius Härtl
9de6a61ea5 Move to vue-material-design-icons
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-07-22 11:39:16 +02:00
Julius Härtl
cc1f059950 Merge pull request #3928 from nextcloud/bugfix/server/32350/rename-settings
Rename settings to deck settings
2022-07-21 17:48:01 +02:00
Vincent Petry
ef3a754033 Rename settings to deck settings
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
2022-07-21 15:22:18 +02:00
Nextcloud bot
e24bd88971 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-07-21 02:38:51 +00:00
dependabot[bot]
caf2193a0f Bump terser from 5.9.0 to 5.14.2
Bumps [terser](https://github.com/terser/terser) from 5.9.0 to 5.14.2.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/commits)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-20 11:45:11 +00:00
Julius Härtl
cb27f36f66 Move global deck icon to plain css
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-07-20 08:58:48 +02:00
Nextcloud bot
6ec8e7ac3b [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-07-19 02:37:58 +00:00
Julius Härtl
dd566ee112 Merge pull request #3924 from nextcloud/bugfix/noid/skip-content
Set ids to skip to content/navigation
2022-07-18 11:10:05 +02:00
Julius Härtl
7f230f2999 Set ids to skip to content/navigation
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-07-18 09:48:02 +02:00
Nextcloud bot
48d8e2f453 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-07-18 02:37:14 +00:00
Julius Härtl
865842e5b8 Merge pull request #3923 from nextcloud/dependabot/npm_and_yarn/master/vue-and-vue-template-compiler-2.7.6
Bump vue and vue-template-compiler
2022-07-16 09:41:08 +02:00
Julius Härtl
fda26f521f Merge pull request #3921 from nextcloud/dependabot/npm_and_yarn/master/dompurify-2.3.9
Bump dompurify from 2.3.8 to 2.3.9
2022-07-16 09:40:48 +02:00
Julius Härtl
70e35f77bf Merge pull request #3922 from nextcloud/dependabot/npm_and_yarn/master/jest-28.1.3
Bump jest from 28.1.2 to 28.1.3
2022-07-16 09:40:39 +02:00
Julius Härtl
0af348fb02 Merge pull request #3813 from nextcloud/bugfix/noid/rename-accessibility
Make rename functions accessibly by keyboard navigation
2022-07-16 09:21:14 +02:00
dependabot[bot]
b67ae13f3c 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.3 to 2.7.6
- [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.3 to 2.7.6
- [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.3...v2.7.6)

---
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>
2022-07-16 01:03:37 +00:00
dependabot[bot]
d9252e37b3 Bump jest from 28.1.2 to 28.1.3
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 28.1.2 to 28.1.3.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v28.1.3/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>
2022-07-16 01:03:13 +00:00
dependabot[bot]
3b6e3d636d Bump dompurify from 2.3.8 to 2.3.9
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.3.8 to 2.3.9.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/2.3.8...2.3.9)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-16 01:03:04 +00:00
Nextcloud bot
0443ca3185 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-07-14 02:37:42 +00:00
Julius Härtl
01e2708233 Merge pull request #3916 from nextcloud/fix/2594/click-event-on-drag-end
Prevent opening card and applyLabelFilter on card drag end
2022-07-12 13:55:20 +02:00
Julien Veyssier
9d3f09fafa refs #2594 prevent opening card and applyLabelFilter on card drag end
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
2022-07-12 12:47:30 +02:00
Julius Härtl
22a208e505 Merge pull request #3910 from nextcloud/tests/php-paths
Limit php tests to certain fails on pull requests
2022-07-12 09:28:18 +02:00
dependabot[bot]
cbc26cd135 Merge pull request #3915 from nextcloud/dependabot/composer/tests/integration/behat/behat-approx-3.11.0 2022-07-09 04:32:39 +00:00
dependabot[bot]
8c5c7d13b8 Merge pull request #3914 from nextcloud/dependabot/github_actions/shivammathur/setup-php-2.20.1 2022-07-09 03:58:08 +00:00
dependabot[bot]
7e042c9dab Merge pull request #3913 from nextcloud/dependabot/npm_and_yarn/master/nextcloud/webpack-vue-config-5.2.1 2022-07-09 03:17:31 +00:00
dependabot[bot]
4a744bac5c Update behat/behat requirement in /tests/integration
Updates the requirements on [behat/behat](https://github.com/Behat/Behat) to permit the latest version.
- [Release notes](https://github.com/Behat/Behat/releases)
- [Changelog](https://github.com/Behat/Behat/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Behat/Behat/compare/v3.10.0...v3.11.0)

---
updated-dependencies:
- dependency-name: behat/behat
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-09 02:07:59 +00:00
dependabot[bot]
89c22acb95 Bump shivammathur/setup-php from 2.19.1 to 2.20.1
Bumps [shivammathur/setup-php](https://github.com/shivammathur/setup-php) from 2.19.1 to 2.20.1.
- [Release notes](https://github.com/shivammathur/setup-php/releases)
- [Commits](https://github.com/shivammathur/setup-php/compare/2.19.1...2.20.1)

---
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>
2022-07-09 01:04:58 +00:00
dependabot[bot]
007ed35a66 Bump @nextcloud/webpack-vue-config from 5.1.0 to 5.2.1
Bumps [@nextcloud/webpack-vue-config](https://github.com/nextcloud/webpack-vue-config) from 5.1.0 to 5.2.1.
- [Release notes](https://github.com/nextcloud/webpack-vue-config/releases)
- [Changelog](https://github.com/nextcloud/webpack-vue-config/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/webpack-vue-config/compare/v5.1.0...v5.2.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-09 01:02:59 +00:00
Nextcloud bot
2bb0e268c8 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-07-08 02:37:14 +00:00
Julius Härtl
d6c7601a14 Merge pull request #3578 from nextcloud/dependabot/npm_and_yarn/master/p-queue-7.2.0
Bump p-queue from 6.6.2 to 7.2.0
2022-07-07 09:17:56 +02:00
dependabot[bot]
a79ec6c5ed Bump p-queue from 6.6.2 to 7.2.0
Bumps [p-queue](https://github.com/sindresorhus/p-queue) from 6.6.2 to 7.2.0.
- [Release notes](https://github.com/sindresorhus/p-queue/releases)
- [Commits](https://github.com/sindresorhus/p-queue/compare/v6.6.2...v7.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-07 09:05:55 +02:00
Julius Härtl
4eea383f74 Limit php tests to certain fails on pull requests
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-07-07 08:58:28 +02:00
Julius Härtl
45746fbf34 Merge pull request #3895 from nextcloud/dependabot/npm_and_yarn/master/cypress-10.3.0
build(deps-dev): Bump cypress from 9.7.0 to 10.3.0
2022-07-07 08:56:54 +02:00
Julius Härtl
7ac40d2d99 Bump cypress action
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-07-07 08:45:46 +02:00
Julius Härtl
bebd157586 Merge pull request #3818 from nextcloud/enh/collaboration-event
Move to OCP\Collaboration\Resources\LoadAdditionalScriptsEvent
2022-07-07 08:41:51 +02:00
dependabot[bot]
02a6fa7418 Merge pull request #3909 from nextcloud/dependabot/npm_and_yarn/moment-2.29.4 2022-07-06 21:58:10 +00:00
dependabot[bot]
bc16421b64 build(deps): Bump moment from 2.29.3 to 2.29.4
Bumps [moment](https://github.com/moment/moment) from 2.29.3 to 2.29.4.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.3...2.29.4)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-06 21:51:23 +00:00
dependabot[bot]
bcc4cf8b57 Merge pull request #3902 from nextcloud/dependabot/npm_and_yarn/master/vue-2.7.2 2022-07-06 21:50:45 +00:00
Julius Härtl
d7418c7ad1 Bump vue-template-compiler to 2.7.3
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-07-06 23:42:38 +02:00
Julius Härtl
c7fb25e3f8 Adapt cypress config and file names
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-07-06 23:37:39 +02:00
Julius Härtl
9e26af66bf Move to OCP\Collaboration\Resources\LoadAdditionalScriptsEvent
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-07-06 23:24:07 +02:00
Nextcloud bot
b741ea79e5 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-07-06 02:35:53 +00:00
dependabot[bot]
7d2f5065be Merge pull request #3891 from nextcloud/dependabot/composer/vimeo/psalm-4.24.0 2022-07-05 21:21:09 +00:00
dependabot[bot]
a9e7f94409 build(deps): Bump vue from 2.6.14 to 2.7.2
Bumps [vue](https://github.com/vuejs/core) from 2.6.14 to 2.7.2.
- [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-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-05 21:13:05 +00:00
dependabot[bot]
d3be13182d build(deps-dev): Bump cypress from 9.7.0 to 10.3.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 9.7.0 to 10.3.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/.releaserc.base.js)
- [Commits](https://github.com/cypress-io/cypress/compare/v9.7.0...v10.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-05 21:12:22 +00:00
dependabot[bot]
a4658be5b6 Merge pull request #3863 from nextcloud/dependabot/npm_and_yarn/master/jest-28.1.1 2022-07-05 21:10:34 +00:00
Julius Härtl
b3f252ee46 Make rename functions accessibly by keyboard navigation
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-07-05 22:48:38 +02:00
Julius Härtl
f98b5764ea Ensure that lists have a title
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-07-05 22:20:59 +02:00
dependabot[bot]
9f8fcec1ad build(deps-dev): Bump jest from 28.1.0 to 28.1.1
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 28.1.0 to 28.1.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v28.1.1/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>
2022-07-05 20:16:29 +00:00
dependabot[bot]
deb4b71e7b build(deps-dev): Bump vimeo/psalm from 4.23.0 to 4.24.0
Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 4.23.0 to 4.24.0.
- [Release notes](https://github.com/vimeo/psalm/releases)
- [Commits](https://github.com/vimeo/psalm/compare/4.23.0...4.24.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>
2022-07-05 20:15:51 +00:00
Julius Härtl
90a2b07e5f Merge pull request #3868 from nextcloud/feat/workflow-auto-update-command-rebase.yml
Updating command-rebase.yml workflow from template
2022-07-05 22:15:10 +02:00
Julius Härtl
e69f909b61 Merge pull request #3872 from wiktor2200/patch-1
fix(docs): fix links to JSON schemas for Trello
2022-07-05 22:14:33 +02:00
Julius Härtl
0686575484 Merge pull request #3898 from q-wertz/master
Switch to 'markdown-it-task-checkbox' for rendering of task lists
2022-07-05 22:13:58 +02:00
q-wertz
c7cadedd21 Merge branch 'master' into master 2022-07-05 15:06:08 +02:00
q-wertz
78d41878e8 Update package-lock.json
Signed-off-by: q-wertz <clemens.sonnleitner@web.de>
2022-07-05 15:05:59 +02:00
Julius Härtl
a527ccd8ed Merge pull request #3894 from nextcloud/dependabot/npm_and_yarn/master/babel/runtime-7.18.6
build(deps): Bump @babel/runtime from 7.18.3 to 7.18.6
2022-07-05 14:40:27 +02:00
Julius Härtl
5f5f745892 Merge pull request #3832 from nextcloud/dependabot/npm_and_yarn/master/vue-router-3.5.4
build(deps): Bump vue-router from 3.5.3 to 3.5.4
2022-07-05 14:40:06 +02:00
wiktor2200
6160d67032 fix(docs): fix links to JSON schemas for Trello
Link in docs was wrong, missing dir: `Importer/`
2022-07-05 14:34:50 +02:00
q-wertz
641341d75d Switch to 'markdown-it-task-checkbox' for rendering of task lists
Signed-off-by: q-wertz <clemens.sonnleitner@web.de>
2022-07-05 12:42:55 +02:00
Julius Härtl
146af217a0 Merge pull request #3833 from flummer/master
Fix for issue #3637
2022-07-05 12:41:22 +02:00
dependabot[bot]
4a0410b609 Merge pull request #3896 from nextcloud/dependabot/composer/tests/integration/sabre/dav-4.4.0 2022-07-05 07:42:23 +00:00
dependabot[bot]
e858a42455 Merge pull request #3879 from nextcloud/dependabot/composer/phpunit/phpunit-9.5.21 2022-07-05 07:38:39 +00:00
dependabot[bot]
b037cb0e82 build(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.3.1...4.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-05 07:30:25 +00:00
dependabot[bot]
5455b436f6 build(deps-dev): Bump phpunit/phpunit from 9.5.20 to 9.5.21
Bumps [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit) from 9.5.20 to 9.5.21.
- [Release notes](https://github.com/sebastianbergmann/phpunit/releases)
- [Changelog](https://github.com/sebastianbergmann/phpunit/blob/main/ChangeLog-9.5.md)
- [Commits](https://github.com/sebastianbergmann/phpunit/compare/9.5.20...9.5.21)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-05 07:30:05 +00:00
dependabot[bot]
786e13b0b7 Merge pull request #3881 from nextcloud/dependabot/composer/tests/integration/guzzlehttp/guzzle-7.4.5 2022-07-05 07:29:11 +00:00
dependabot[bot]
759fb1bcbc build(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/master/CHANGELOG.md)
- [Commits](https://github.com/guzzle/guzzle/compare/7.4.3...7.4.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-05 09:19:55 +02:00
Julius Härtl
227c962ec4 Merge pull request #3900 from nextcloud/tests/static-circles
Fix static analysis by stubbing more circle methods
2022-07-05 09:14:15 +02:00
Julius Härtl
f03ffd13a0 Fix static analysis by stubbing more circle methods
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-07-05 08:30:40 +02:00
Julius Härtl
00120a6b37 Merge pull request #3865 from nextcloud/dependabot/github_actions/shivammathur/setup-php-2.19.1
build(deps): Bump shivammathur/setup-php from 2.19.0 to 2.19.1
2022-07-04 17:05:36 +02:00
Nextcloud bot
884121bdae [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-07-04 02:35:47 +00:00
Nextcloud bot
48b92ce0b1 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-07-02 02:37:21 +00:00
dependabot[bot]
f8e1326837 build(deps): Bump @babel/runtime from 7.18.3 to 7.18.6
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.18.3 to 7.18.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.18.6/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-02 02:08:46 +00:00
Raul Ferreira Fuentes
00cf15935b Merge pull request #3884 from nextcloud/enh/fix_sidebar
Fix z-index for deck sidebar
2022-06-28 14:39:40 +02:00
Raul
172ee5a228 Fix z-index for deck sidebar
The sidebar would previously render above the user menu (logout, settings, etc)

Signed-off-by: Raul <r.ferreira.fuentes@gmail.com>
2022-06-28 14:10:17 +02:00
Nextcloud bot
2f2a43e9c6 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-06-22 02:40:24 +00:00
Nextcloud bot
a9e32dfc99 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-06-14 02:41:50 +00:00
Nextcloud bot
5450b0fd0b [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-06-12 02:41:02 +00:00
Nextcloud bot
e09581aa78 Updating command-rebase.yml workflow from template
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-06-11 15:14:59 +00:00
dependabot[bot]
e08a8ff132 build(deps): Bump shivammathur/setup-php from 2.19.0 to 2.19.1
Bumps [shivammathur/setup-php](https://github.com/shivammathur/setup-php) from 2.19.0 to 2.19.1.
- [Release notes](https://github.com/shivammathur/setup-php/releases)
- [Commits](https://github.com/shivammathur/setup-php/compare/2.19.0...2.19.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>
2022-06-11 01:04:11 +00:00
Matheus Stolf
8ee0a0fad0 Inserted required property in the rename list field, to prevent the list from being unnamed 2022-06-10 08:24:01 -03:00
Nextcloud bot
4b3ed4f43d [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-06-09 02:45:30 +00:00
Nextcloud bot
6ed2e11730 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-06-07 02:44:05 +00:00
Julius Härtl
e784dafefe Merge pull request #3853 from nextcloud/dependabot/github_actions/shivammathur/setup-php-2.19.0
build(deps): Bump shivammathur/setup-php from 2.18.1 to 2.19.0
2022-06-04 14:25:07 +02:00
dependabot[bot]
6cdc6f7bdb build(deps): Bump shivammathur/setup-php from 2.18.1 to 2.19.0
Bumps [shivammathur/setup-php](https://github.com/shivammathur/setup-php) from 2.18.1 to 2.19.0.
- [Release notes](https://github.com/shivammathur/setup-php/releases)
- [Commits](https://github.com/shivammathur/setup-php/compare/2.18.1...2.19.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>
2022-06-04 01:10:29 +00:00
Nextcloud bot
60a7a7cf94 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-06-03 02:47:50 +00:00
Nextcloud bot
765c0ea17c [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-06-02 02:47:07 +00:00
Julius Härtl
de7de4cd8a Merge pull request #3839 from nextcloud/dependabot/composer/tests/integration/guzzlehttp/guzzle-7.4.3
build(deps-dev): Update guzzlehttp/guzzle requirement from 7.4.2 to 7.4.3 in /tests/integration
2022-05-30 19:23:43 +02:00
Julius Härtl
19473ddba9 Merge pull request #3841 from nextcloud/dependabot/npm_and_yarn/master/babel/runtime-7.18.3
build(deps): Bump @babel/runtime from 7.17.9 to 7.18.3
2022-05-30 19:23:33 +02:00
Julius Härtl
14421b533d Merge pull request #3840 from nextcloud/dependabot/npm_and_yarn/master/cypress-9.7.0
build(deps-dev): Bump cypress from 9.6.1 to 9.7.0
2022-05-30 19:23:26 +02:00
Nextcloud bot
21fc5d590f [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-05-29 02:46:51 +00:00
dependabot[bot]
24651db512 build(deps): Bump @babel/runtime from 7.17.9 to 7.18.3
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.17.9 to 7.18.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.18.3/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-28 03:33:11 +00:00
dependabot[bot]
27644bd032 build(deps-dev): Bump cypress from 9.6.1 to 9.7.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 9.6.1 to 9.7.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/.releaserc.base.js)
- [Commits](https://github.com/cypress-io/cypress/compare/v9.6.1...v9.7.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-28 03:00:55 +00:00
Nextcloud bot
0c2e7fae9f [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-05-28 02:43:22 +00:00
dependabot[bot]
9d4824bb23 build(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/master/CHANGELOG.md)
- [Commits](https://github.com/guzzle/guzzle/compare/7.4.2...7.4.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-28 02:35:17 +00:00
Nextcloud bot
3b19b4212b [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-05-26 02:44:15 +00:00
Nextcloud bot
69c2b3ffbb [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-05-24 02:47:10 +00:00
Nextcloud bot
92ca6261b8 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-05-23 02:43:43 +00:00
Thomas Flummer
9e5e160845 Fix for issue #3637
Added padding on nested ul, to compensate for the negative margin on the containing li

Signed-off-by: Thomas Flummer <tf@flummer.net>
2022-05-22 11:31:22 +02:00
Nextcloud bot
6a66e920fe [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-05-22 02:43:38 +00:00
Nextcloud bot
cab9f6ab4e [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-05-21 02:47:11 +00:00
dependabot[bot]
0395f01c33 build(deps): Bump vue-router from 3.5.3 to 3.5.4
Bumps [vue-router](https://github.com/vuejs/router) from 3.5.3 to 3.5.4.
- [Release notes](https://github.com/vuejs/router/releases)
- [Changelog](https://github.com/vuejs/router/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/router/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-21 01:05:05 +00:00
Nextcloud bot
de88f17a1a [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-05-20 02:46:25 +00:00
Julius Härtl
9db8f9c924 Merge pull request #3820 from nextcloud/bugfix/3819
Improve filter popover accessibility
2022-05-18 14:46:23 +02:00
Julius Härtl
7328a27524 Merge pull request #3826 from nextcloud/dependabot/npm_and_yarn/master/cypress-9.6.1
build(deps-dev): Bump cypress from 9.6.0 to 9.6.1
2022-05-16 16:54:20 +02:00
Julien Veyssier
8ee41e9608 Merge pull request #3830 from nextcloud/enh/noid/readme-performance-limitations
Add performance section in README
2022-05-16 13:43:34 +02:00
Julien Veyssier
0ed6403141 add performance section in README
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
2022-05-16 13:05:34 +02:00
dependabot[bot]
6980661a8e Merge pull request #3824 from nextcloud/dependabot/npm_and_yarn/master/dompurify-2.3.8 2022-05-14 02:45:08 +00:00
dependabot[bot]
4797313f9e Merge pull request #3825 from nextcloud/dependabot/npm_and_yarn/master/nextcloud/l10n-1.6.0 2022-05-14 02:28:44 +00:00
dependabot[bot]
b17774da6e build(deps-dev): Bump cypress from 9.6.0 to 9.6.1
Bumps [cypress](https://github.com/cypress-io/cypress) from 9.6.0 to 9.6.1.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/.releaserc.base.js)
- [Commits](https://github.com/cypress-io/cypress/compare/v9.6.0...v9.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>
2022-05-14 01:02:55 +00:00
dependabot[bot]
a4bba21610 build(deps): Bump @nextcloud/l10n from 1.4.1 to 1.6.0
Bumps [@nextcloud/l10n](https://github.com/nextcloud/nextcloud-l10n) from 1.4.1 to 1.6.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/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-14 01:01:53 +00:00
dependabot[bot]
7e1d522601 build(deps): Bump dompurify from 2.3.6 to 2.3.8
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.3.6 to 2.3.8.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/2.3.6...2.3.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-14 01:01:34 +00:00
Julius Härtl
cd2225bbc8 Merge pull request #3823 from nextcloud/feat/workflow-auto-update-command-rebase.yml
Updating command-rebase.yml workflow from template
2022-05-13 21:21:19 +02:00
Nextcloud bot
62af22c928 Updating command-rebase.yml workflow from template
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-05-13 18:39:33 +00:00
Julius Härtl
2b531c5302 Merge pull request #3801 from nextcloud/cleanup/server-di
Switch from OC::$server->get to OCP\Server::get
2022-05-13 12:58:46 +02:00
Julius Härtl
41ed0cee1d Improve filter popover accessibility
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-05-13 12:40:05 +02:00
Julius Härtl
ce7da62a88 Revert lazy use of userId in ConfigService
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-05-13 11:52:21 +02:00
Julius Härtl
f93772ebc9 Merge pull request #3814 from nextcloud/enh/editorconfig
Fix editor config
2022-05-13 09:33:25 +02:00
Nextcloud bot
f63b052864 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-05-13 02:41:45 +00:00
Julius Härtl
43dbdd049f Merge pull request #3811 from Ben-Ro/Card-View_Duedate_delete-Icon_not_aligned_properly
Align Duedate-delete icon properly - fixes nextcloud/deck#3791
2022-05-12 16:53:52 +02:00
Julius Härtl
6a489eaaf3 Fix editor config
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-05-12 16:48:21 +02:00
Julius Härtl
3a783a722a Use SymfonyAdapter for legacy event
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-05-12 10:55:37 +02:00
Carl Schwan
44481e1c2a Switch from OC::$server->get to OCP\Server::get
And add a bit more typing to some classes + psalm issues

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-05-12 10:55:36 +02:00
ben
e3d1970369 Align Duedate-delete icon properly - fixes nextcloud/deck#3791
Signed-off-by: ben <ben@ro.tt>
2022-05-12 10:28:24 +02:00
Julius Härtl
2c7708dab1 Merge pull request #3809 from nextcloud/bugfix/cs-fix
Fix php-cs-fixer failure
2022-05-11 23:40:50 +02:00
Julius Härtl
e156ff77f8 Merge pull request #3808 from nextcloud/bugfix/eslint-root
Make eslint stop reading configs at the root
2022-05-11 22:03:45 +02:00
Julius Härtl
5f5f22ee8c Fix php-cs-fixer failure
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-05-11 21:47:05 +02:00
Julius Härtl
011b60b3bf Make eslint stop reading configs at the root
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-05-11 21:42:44 +02:00
Julius Härtl
9bd8669cf4 Merge pull request #3682 from nextcloud/bug/increase-file-count-after-sharing
Increase file count after sharing
2022-05-11 16:40:42 +02:00
Julius Härtl
4b5a47f127 Merge pull request #3696 from nextcloud/feature/setup-cypress-test
Setup cypress test
2022-05-11 16:08:18 +02:00
Julius Härtl
db45e7907c Merge pull request #3796 from ylebre/master
set last modified when the card was found. Fixes #3763
2022-05-11 16:04:55 +02:00
Julius Härtl
03f400620e Move all caching to helper
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-05-11 16:04:12 +02:00
Luka Trovic
d938a528c3 fix: integrate feedback
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2022-05-11 11:20:01 +01:00
Luka Trovic
2309749d15 fix: solve cypress tests issues
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2022-05-11 11:20:01 +01:00
Luka Trovic
b37b8eaeaf fix: cypress error fix
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2022-05-11 11:20:01 +01:00
Luka Trovic
9c57243d5a fix: solve merge conflicts related to cypress setup
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2022-05-11 11:20:01 +01:00
Luka Trovic
6518cd464c fix: resolve merge conflicts
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2022-05-11 11:20:01 +01:00
Julius Härtl
7e32a16969 Adapt login command to server master change
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-05-11 11:20:01 +01:00
Julius Härtl
349c94ee23 Try with port
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-05-11 11:20:01 +01:00
Yvo Brevoort
167774e3b0 set last modified when the card was found instead of trying to change it on the -1 index. 2022-05-10 09:30:08 +02:00
Luka Trovic
f2ba1bd4ab fix: make cypress tests pass
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2022-05-09 12:07:33 +01:00
Luka Trovic
3ce8041a12 fix: resolve merge conflicts
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2022-05-09 12:07:02 +01:00
Luka Trovic
a4bbf8f233 fix: solve cypress baseURL for deck app
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2022-05-09 12:05:43 +01:00
Luka Trovic
1b813c4ea2 feat: add github action
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2022-05-09 12:05:43 +01:00
Luka Trovic
e6c2d85197 tests: add cypress tests for deck dashboard, boards, lists, cards
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2022-05-09 12:05:43 +01:00
Luka Trovic
23ae20efe7 fix: solve merge conflicts
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2022-05-09 12:04:34 +01:00
Luka Trovic
37b3f03809 fix: resolve merge conflicts
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2022-05-09 11:51:39 +01:00
dependabot[bot]
43540b008c Merge pull request #3786 from nextcloud/dependabot/npm_and_yarn/master/jest-28.1.0 2022-05-07 05:42:19 +00:00
dependabot[bot]
169ccbb47f build(deps-dev): Bump jest from 28.0.3 to 28.1.0
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 28.0.3 to 28.1.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v28.1.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>
2022-05-07 05:33:20 +00:00
dependabot[bot]
0af35817a6 Merge pull request #3789 from nextcloud/dependabot/npm_and_yarn/master/relative-ci/agent-3.1.3 2022-05-07 04:40:04 +00:00
dependabot[bot]
c942542079 Merge pull request #3790 from nextcloud/dependabot/npm_and_yarn/master/nextcloud-vue-collections-0.10.0 2022-05-07 02:57:53 +00:00
dependabot[bot]
8a6d8e0549 Merge pull request #3787 from nextcloud/dependabot/npm_and_yarn/master/markdown-it-13.0.1 2022-05-07 02:25:10 +00:00
dependabot[bot]
0c4dbebaeb build(deps-dev): Bump @relative-ci/agent from 3.1.2 to 3.1.3
Bumps [@relative-ci/agent](https://github.com/relative-ci/agent) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/relative-ci/agent/releases)
- [Commits](https://github.com/relative-ci/agent/compare/v3.1.2...v3.1.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-07 02:13:55 +00:00
dependabot[bot]
5995ec299c Merge pull request #3788 from nextcloud/dependabot/npm_and_yarn/master/nextcloud/webpack-vue-config-5.1.0 2022-05-07 02:12:59 +00:00
dependabot[bot]
e2c82fe3dc Merge pull request #3785 from nextcloud/dependabot/composer/vimeo/psalm-4.23.0 2022-05-07 02:09:06 +00:00
dependabot[bot]
39f6c12d33 build(deps): Bump nextcloud-vue-collections from 0.9.0 to 0.10.0
Bumps [nextcloud-vue-collections](https://github.com/juliushaertl/nextcloud-vue-collections) from 0.9.0 to 0.10.0.
- [Release notes](https://github.com/juliushaertl/nextcloud-vue-collections/releases)
- [Commits](https://github.com/juliushaertl/nextcloud-vue-collections/compare/v0.9.0...v0.10.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-07 01:04:35 +00:00
dependabot[bot]
ae24d9ef03 build(deps-dev): Bump @nextcloud/webpack-vue-config from 5.0.0 to 5.1.0
Bumps [@nextcloud/webpack-vue-config](https://github.com/nextcloud/webpack-vue-config) from 5.0.0 to 5.1.0.
- [Release notes](https://github.com/nextcloud/webpack-vue-config/releases)
- [Changelog](https://github.com/nextcloud/webpack-vue-config/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/webpack-vue-config/compare/v5.0.0...v5.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-07 01:04:05 +00:00
dependabot[bot]
5a1f5757c1 build(deps): Bump markdown-it from 13.0.0 to 13.0.1
Bumps [markdown-it](https://github.com/markdown-it/markdown-it) from 13.0.0 to 13.0.1.
- [Release notes](https://github.com/markdown-it/markdown-it/releases)
- [Changelog](https://github.com/markdown-it/markdown-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/markdown-it/markdown-it/compare/13.0.0...13.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-07 01:04:03 +00:00
dependabot[bot]
b194b88c49 build(deps-dev): Bump vimeo/psalm from 4.22.0 to 4.23.0
Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 4.22.0 to 4.23.0.
- [Release notes](https://github.com/vimeo/psalm/releases)
- [Commits](https://github.com/vimeo/psalm/compare/4.22.0...4.23.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>
2022-05-07 01:01:09 +00:00
Raul Ferreira Fuentes
b86fbb3cd8 Merge pull request #3782 from nextcloud/enh/backend_serialization_models
Add CardDetail serialization model
2022-05-06 12:47:33 +02:00
Raul
9fca104059 Pipeline and codestyle fixes
Signed-off-by: Raul <raul@nextcloud.com>
2022-05-06 11:29:13 +02:00
Raul
9369a697e3 Add getDueDateTime function to expose the duedate in datetime format.
Signed-off-by: Raul <raul@nextcloud.com>
2022-05-06 11:29:13 +02:00
Raul
ebbafbe55d Add board summary model
Signed-off-by: Raul <raul@nextcloud.com>
2022-05-06 11:29:13 +02:00
Raul
6bf9ba397e Add phpDoc typehints for magic methods
Signed-off-by: Raul <raul@nextcloud.com>
2022-05-06 11:29:13 +02:00
Raul
7b7af75802 Update Card serialization (jsonSerialize usages) to use CardDetails model
Signed-off-by: Raul <raul@nextcloud.com>
2022-05-06 11:29:13 +02:00
Raul
723ce6c893 Add CardDetails model
Signed-off-by: Raul <raul@nextcloud.com>
2022-05-06 11:29:13 +02:00
Luka Trovic
ed3be361b5 fix: move shares count cache logic to the DeckShareProvider
Signed-off-by: Luka Trovic <luka@nextcloud.com>

fix: conflicts

Signed-off-by: Luka Trovic <luka@nextcloud.com>

fix: conflicts and test issues

Signed-off-by: Luka Trovic <luka@nextcloud.com>
2022-05-06 10:25:48 +02:00
Luka Trovic
0b6990f828 fix: update attachments count when sharing
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2022-05-06 10:24:32 +02:00
Luka Trovic
2af94410f5 fix: increase file count after sharing
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2022-05-06 10:24:32 +02:00
Nextcloud bot
b348565449 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-05-06 02:41:13 +00:00
Niedermann IT-Dienstleistungen
aa06255e26 Merge pull request #3783 from nextcloud/bugfix/noid/stack-find
Fix entity creation for stack from card id
2022-05-05 11:59:01 +02:00
Julius Härtl
a0d967cdc7 Fix entity creation for stack from card id
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-05-05 08:25:07 +02:00
Nextcloud bot
494a72709d [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-05-05 02:41:03 +00:00
Julius Härtl
8947cebf04 Merge pull request #3777 from nextcloud/bugfix/noid/clone-full-data
Fetch full board data after cloning
2022-05-04 12:29:05 +02:00
Nextcloud bot
b51993db0c [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-05-04 02:42:54 +00:00
Nextcloud bot
5c8f80a907 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-05-03 02:41:21 +00:00
Julius Härtl
9fab40d12a Fetch full board data after cloning
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-05-02 17:48:25 +02:00
Julius Härtl
420a5fa782 Forward-port changlog from 1.7.0
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-05-02 16:44:40 +02:00
Julius Härtl
fe335ea865 Merge pull request #3773 from nextcloud/dependabot/github_actions/cirrus-actions/rebase-1.6
build(deps): Bump cirrus-actions/rebase from 1.5 to 1.6
2022-05-02 16:38:38 +02:00
Julius Härtl
ad04a483e3 Merge pull request #3771 from nextcloud/dependabot/npm_and_yarn/master/jest-28.0.3
build(deps-dev): Bump jest from 27.5.1 to 28.0.3
2022-05-02 16:38:28 +02:00
dependabot[bot]
b3228f1e27 build(deps-dev): Bump jest from 27.5.1 to 28.0.3
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 27.5.1 to 28.0.3.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v28.0.3/packages/jest)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-30 05:02:09 +00:00
dependabot[bot]
249935fc66 Merge pull request #3772 from nextcloud/dependabot/npm_and_yarn/master/nextcloud/axios-1.10.0 2022-04-30 05:01:00 +00:00
dependabot[bot]
53c0ccfba8 build(deps): Bump cirrus-actions/rebase from 1.5 to 1.6
Bumps [cirrus-actions/rebase](https://github.com/cirrus-actions/rebase) from 1.5 to 1.6.
- [Release notes](https://github.com/cirrus-actions/rebase/releases)
- [Commits](https://github.com/cirrus-actions/rebase/compare/1.5...1.6)

---
updated-dependencies:
- dependency-name: cirrus-actions/rebase
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-30 04:09:31 +00:00
dependabot[bot]
4706adb0d5 build(deps): Bump @nextcloud/axios from 1.9.0 to 1.10.0
Bumps [@nextcloud/axios](https://github.com/nextcloud/nextcloud-axios) from 1.9.0 to 1.10.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/v1.9.0...v1.10.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-30 03:11:10 +00:00
Nextcloud bot
53b6bf0986 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-04-30 02:39:54 +00:00
Julius Härtl
65d9a75421 Merge pull request #3761 from nextcloud/bugfix/3711
Fix text selection in dark mode and modal view
2022-04-29 11:32:53 +02:00
Julius Härtl
c089192904 Fix text selection in dark mode and modal view
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-04-29 11:10:08 +02:00
Julius Härtl
a8af3310b4 Merge pull request #3762 from nextcloud/bugfix/3744
Adapt the card modal to upstream changes
2022-04-29 10:47:10 +02:00
Julius Härtl
58e6989307 Merge pull request #3746 from nextcloud/dependabot/npm_and_yarn/master/nextcloud/eslint-config-8.0.0
build(deps-dev): Bump @nextcloud/eslint-config from 6.1.2 to 8.0.0
2022-04-29 09:10:26 +02:00
Nextcloud bot
18f7ea2a7e [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-04-29 02:41:06 +00:00
dependabot[bot]
4e8219c6fa build(deps-dev): Bump @nextcloud/eslint-config from 6.1.2 to 8.0.0
Bumps [@nextcloud/eslint-config](https://github.com/nextcloud/eslint-config) from 6.1.2 to 8.0.0.
- [Release notes](https://github.com/nextcloud/eslint-config/releases)
- [Changelog](https://github.com/nextcloud/eslint-config/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/eslint-config/compare/v6.1.2...v8.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-28 15:04:26 +02:00
Julius Härtl
24f7ef69c7 Adapt modal size to viewer upstream changes
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-04-28 13:48:25 +02:00
rakekniven
1578c13bf5 Merge pull request #3759 from nextcloud/rakekniven-patch-1
l10n: Improved grammar regarding board transfer
2022-04-28 13:05:47 +02:00
rakekniven
ca2aa5d7f7 l10n: Improved grammar regarding board transfer
Reported at Transifex.

Signed-off-by: rakekniven <2069590+rakekniven@users.noreply.github.com>
2022-04-28 12:58:06 +02:00
Nextcloud bot
4d43f83443 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-04-28 02:41:20 +00:00
Julius Härtl
319869bc6d Merge pull request #3747 from nextcloud/dependabot/npm_and_yarn/master/markdown-it-13.0.0
build(deps): Bump markdown-it from 12.3.2 to 13.0.0
2022-04-26 18:58:41 +02:00
Julius Härtl
405fb52cb2 Merge pull request #3753 from nextcloud/feat/workflow-auto-update-command-rebase.yml
Updating command-rebase.yml workflow from template
2022-04-26 18:57:55 +02:00
Julius Härtl
76a6fad4e2 Merge pull request #3745 from nextcloud/bugfix/noid/missing-indices
Add missing indices
2022-04-26 18:26:00 +02:00
Nextcloud bot
47be49253b Updating command-rebase.yml workflow from template
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-04-26 14:54:17 +00:00
Nextcloud bot
5177c793a7 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-04-24 02:41:14 +00:00
dependabot[bot]
bb06ac0c42 Merge pull request #3749 from nextcloud/dependabot/npm_and_yarn/master/nextcloud/moment-1.2.1 2022-04-23 03:23:43 +00:00
dependabot[bot]
20668bef9e build(deps): Bump markdown-it from 12.3.2 to 13.0.0
Bumps [markdown-it](https://github.com/markdown-it/markdown-it) from 12.3.2 to 13.0.0.
- [Release notes](https://github.com/markdown-it/markdown-it/releases)
- [Changelog](https://github.com/markdown-it/markdown-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/markdown-it/markdown-it/compare/12.3.2...13.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-23 02:52:19 +00:00
dependabot[bot]
747f8d4567 Merge pull request #3748 from nextcloud/dependabot/npm_and_yarn/master/moment-2.29.3 2022-04-23 02:51:24 +00:00
Nextcloud bot
501927c844 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-04-23 02:39:27 +00:00
dependabot[bot]
d03ae91d11 build(deps): Bump @nextcloud/moment from 1.2.0 to 1.2.1
Bumps [@nextcloud/moment](https://github.com/nextcloud/nextcloud-moment) from 1.2.0 to 1.2.1.
- [Release notes](https://github.com/nextcloud/nextcloud-moment/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-moment/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-moment/compare/v1.2.0...v1.2.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-23 01:05:27 +00:00
dependabot[bot]
cc2f45f764 build(deps): Bump moment from 2.29.2 to 2.29.3
Bumps [moment](https://github.com/moment/moment) from 2.29.2 to 2.29.3.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/2.29.3/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.2...2.29.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-23 01:03:09 +00:00
Julius Härtl
713dcd5d08 Add missing indices
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-04-22 12:41:08 +02:00
Nextcloud bot
8b69c90bf1 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-04-22 02:40:25 +00:00
Julius Härtl
5513122ca9 Merge pull request #3681 from nextcloud/bug/cards-disappear-after-moving-to-other-list
Show cards after moving into another list
2022-04-20 16:24:02 +02:00
Julius Härtl
7507ac31f7 Merge pull request #3692 from nextcloud/bug/fix-hidden-attachment-icon-on-archived-cards
Fix hidden attachment icon on archived cards
2022-04-20 16:22:01 +02:00
Julius Härtl
49e51675d3 Merge pull request #3720 from nextcloud/bugfix/deck_mapper/use_qb_mapper
Update `DeckMapper` to extend `QBMapper`
2022-04-20 16:21:18 +02:00
Luka Trovic
056d54d313 fix: feedback
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2022-04-19 12:22:18 +02:00
Luka Trovic
00eac849fe fix: show card after moving into another list
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2022-04-19 12:22:18 +02:00
Julius Härtl
75a17dae2c Merge pull request #3727 from nextcloud/dependabot/github_actions/cirrus-actions/rebase-1.6
build(deps): Bump cirrus-actions/rebase from 1.5 to 1.6
2022-04-19 12:20:54 +02:00
Julius Härtl
62c81ac785 Merge pull request #3724 from nextcloud/update-master-version
Update version on master
2022-04-19 10:50:29 +02:00
Nextcloud bot
15c5170195 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-04-17 02:38:07 +00:00
dependabot[bot]
4b302c0330 Merge pull request #3726 from nextcloud/dependabot/github_actions/shivammathur/setup-php-2.18.1 2022-04-16 02:49:49 +00:00
dependabot[bot]
7977fa40e7 Merge pull request #3728 from nextcloud/dependabot/npm_and_yarn/async-2.6.4 2022-04-16 02:35:21 +00:00
dependabot[bot]
45c4c507bc build(deps): Bump async from 2.6.3 to 2.6.4
Bumps [async](https://github.com/caolan/async) from 2.6.3 to 2.6.4.
- [Release notes](https://github.com/caolan/async/releases)
- [Changelog](https://github.com/caolan/async/blob/v2.6.4/CHANGELOG.md)
- [Commits](https://github.com/caolan/async/compare/v2.6.3...v2.6.4)

---
updated-dependencies:
- dependency-name: async
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-16 02:19:19 +00:00
dependabot[bot]
33f2e03e13 Merge pull request #3725 from nextcloud/dependabot/composer/justinrainbow/json-schema-5.2.12 2022-04-16 02:18:34 +00:00
dependabot[bot]
56391021a4 build(deps): Bump cirrus-actions/rebase from 1.5 to 1.6
Bumps [cirrus-actions/rebase](https://github.com/cirrus-actions/rebase) from 1.5 to 1.6.
- [Release notes](https://github.com/cirrus-actions/rebase/releases)
- [Commits](https://github.com/cirrus-actions/rebase/compare/1.5...1.6)

---
updated-dependencies:
- dependency-name: cirrus-actions/rebase
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-16 01:07:43 +00:00
dependabot[bot]
ab831c2604 build(deps): Bump shivammathur/setup-php from 2.18.0 to 2.18.1
Bumps [shivammathur/setup-php](https://github.com/shivammathur/setup-php) from 2.18.0 to 2.18.1.
- [Release notes](https://github.com/shivammathur/setup-php/releases)
- [Commits](https://github.com/shivammathur/setup-php/compare/2.18.0...2.18.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>
2022-04-16 01:07:39 +00:00
dependabot[bot]
11fc4d88aa build(deps): Bump justinrainbow/json-schema from 5.2.11 to 5.2.12
Bumps [justinrainbow/json-schema](https://github.com/justinrainbow/json-schema) from 5.2.11 to 5.2.12.
- [Release notes](https://github.com/justinrainbow/json-schema/releases)
- [Commits](https://github.com/justinrainbow/json-schema/compare/5.2.11...5.2.12)

---
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>
2022-04-16 01:01:32 +00:00
Joas Schilling
57dd1982a0 Update version on master
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-04-14 23:22:54 +02:00
Raul
3f754dc662 Update AttachmentMapper finder methods to use $this-getTableName() instead of explicitly naming the table on the FROM parameters.
Signed-off-by: Raul <raul@nextcloud.com>
2022-04-14 16:56:22 +02:00
Raul
0c5b1a88a6 Run cs:fix
Signed-off-by: Raul <raul@nextcloud.com>
2022-04-13 12:43:00 +02:00
Raul
1d5fdef4b4 Remove redundant is_array checks on return result from LabelMapper::findAll
Signed-off-by: Raul <raul@nextcloud.com>
2022-04-13 12:40:05 +02:00
Raul
815b8597d1 Use numeric typehint instead of int to allow for numeric strings to be passed to find methods. Fixes the psalm check.
Signed-off-by: Raul <raul@nextcloud.com>
2022-04-13 12:39:39 +02:00
Raul
53e3a7ae7f Removed redundant phpDoc block from constructors
Signed-off-by: Raul <raul@nextcloud.com>
2022-04-13 10:43:14 +02:00
Raul
04974d37d6 Replace rowCount() with explicit count primitive function. This is necessary due to sqlite driver always returning 0 on rowCount (this is documented behaviour: https://www.php.net/manual/en/pdostatement.rowcount.php)
Signed-off-by: Raul <raul@nextcloud.com>
2022-04-13 10:38:32 +02:00
Raul Ferreira Fuentes
8c1e53a8df Fix test case which relied on mapper->delete() returning a bool value
Signed-off-by: Raul Ferreira Fuentes <raul@nextcloud.com>
2022-04-11 20:04:16 +02:00
Raul Ferreira Fuentes
8399b00a10 Fix Entity class in AclMapper
Signed-off-by: Raul Ferreira Fuentes <raul@nextcloud.com>
2022-04-11 19:46:05 +02:00
Raul Ferreira Fuentes
9244adee30 Various small fixes in mapper queries
Signed-off-by: Raul Ferreira Fuentes <raul@nextcloud.com>
2022-04-11 18:44:27 +02:00
Raul Ferreira Fuentes
3265a9de7b Merge branch 'master' into bugfix/deck_mapper/use_qb_mapper 2022-04-11 18:27:52 +02:00
Raul Ferreira Fuentes
ec602f3e15 Update DeckMapper to extend QBMapper instead of deprecated Mapper
Signed-off-by: Raul Ferreira Fuentes <raul@nextcloud.com>
2022-04-11 18:24:41 +02:00
Luka Trovic
c9bb49e0f7 fix: hidden attachment icon on archived cards
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2022-04-05 18:29:47 +02:00
176 changed files with 13141 additions and 7257 deletions

View File

@@ -3,7 +3,10 @@ root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = tab
indent_style = tab
insert_final_newline = true
trim_trailing_whitespace = true
[*.{js,vue}]
indent_style = tab

View File

@@ -1,4 +1,5 @@
module.exports = {
root: true,
extends: [
'@nextcloud',
],
@@ -7,6 +8,7 @@ module.exports = {
'jsdoc/require-param-type': ['off'],
'jsdoc/check-param-names': ['off'],
'jsdoc/no-undefined-types': ['off'],
'jsdoc/require-property-description' : ['off']
'jsdoc/require-property-description': ['off'],
'import/no-named-as-default-member': ['off']
},
}

View File

@@ -1,7 +1,11 @@
name: Package build
on:
pull_request:
push:
branches:
- main
- master
- stable*
jobs:
build:
@@ -20,7 +24,7 @@ jobs:
- name: Set up npm7
run: npm i -g npm@7
- name: Setup PHP
uses: shivammathur/setup-php@2.18.0
uses: shivammathur/setup-php@2.21.2
with:
php-version: '7.4'
tools: composer

View File

@@ -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.18.0
uses: shivammathur/setup-php@2.21.2
with:
php-version: ${{ env.PHP_VERSION }}
coverage: none

View File

@@ -9,9 +9,14 @@ on:
issue_comment:
types: created
permissions:
contents: read
jobs:
rebase:
runs-on: ubuntu-latest
permissions:
contents: none
# On pull requests and if the comment starts with `/rebase`
if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/rebase')
@@ -32,7 +37,7 @@ jobs:
token: ${{ secrets.COMMAND_BOT_PAT }}
- name: Automatic Rebase
uses: cirrus-actions/rebase@1.5
uses: cirrus-actions/rebase@1.7
env:
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}

112
.github/workflows/cypress.yml vendored Normal file
View File

@@ -0,0 +1,112 @@
name: Cypress
on:
pull_request:
push:
branches:
- master
- stable*
env:
APP_NAME: deck
CYPRESS_baseUrl: http://localhost:8081/index.php
jobs:
cypress:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node-version: [14.x]
# containers: [1, 2, 3]
php-versions: [ '7.4' ]
databases: [ 'sqlite' ]
server-versions: [ 'stable25' ]
steps:
- 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: Checkout server
uses: actions/checkout@v3
with:
repository: nextcloud/server
ref: ${{ matrix.server-versions }}
- name: Checkout submodules
shell: bash
run: |
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
git submodule sync --recursive
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
- name: Checkout ${{ env.APP_NAME }}
uses: actions/checkout@v3
with:
path: apps/${{ env.APP_NAME }}
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@2.21.2
with:
php-version: ${{ matrix.php-versions }}
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, zip, gd, apcu
ini-values:
apc.enable_cli=on
coverage: none
- name: Set up Nextcloud
env:
DB_PORT: 4444
PHP_CLI_SERVER_WORKERS: 10
run: |
mkdir data
php occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
php occ config:system:set memcache.local --value="\\OC\\Memcache\\APCu"
php occ config:system:set debug --value=true --type=boolean
php -f index.php
php -S 0.0.0.0:8081 &
export OC_PASS=1234561
php occ user:add --password-from-env user1
php occ user:add --password-from-env user2
php occ app:enable deck
php occ app:list
cd apps/deck
composer install --no-dev
npm ci
npm run build
cd ../../
curl -v http://localhost:8081/index.php/login
- name: Cypress run
uses: cypress-io/github-action@v4
with:
record: true
parallel: false
wait-on: '${{ env.CYPRESS_baseUrl }}'
working-directory: 'apps/${{ env.APP_NAME }}'
config: defaultCommandTimeout=10000,video=false
env:
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
npm_package_name: ${{ env.APP_NAME }}
- name: Upload test failure screenshots
uses: actions/upload-artifact@v2
if: failure()
with:
name: Upload screenshots
path: apps/${{ env.APP_NAME }}/cypress/screenshots/
retention-days: 5
- name: Upload nextcloud logs
uses: actions/upload-artifact@v2
if: failure()
with:
name: Upload nextcloud log
path: data/nextcloud.log
retention-days: 5

View File

@@ -8,13 +8,20 @@ name: Dependabot
on:
pull_request_target:
branches:
- main
- master
- stable*
permissions:
contents: read
jobs:
auto-approve-merge:
if: github.actor == 'dependabot[bot]'
runs-on: ubuntu-latest
permissions:
# for hmarr/auto-approve-action to approve PRs
pull-requests: write
steps:
# Github actions bot approve

View File

@@ -2,6 +2,14 @@ name: Integration tests
on:
pull_request:
paths:
- '.github/workflows/integration.yml'
- 'appinfo/**'
- 'lib/**'
- 'templates/**'
- 'tests/**'
- 'composer.json'
- 'composer.lock'
push:
branches:
- master
@@ -19,7 +27,7 @@ jobs:
matrix:
php-versions: ['7.4']
databases: ['sqlite', 'mysql', 'pgsql']
server-versions: ['stable24']
server-versions: ['stable25']
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
@@ -54,7 +62,7 @@ jobs:
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
git submodule sync --recursive
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
cd build/integration && composer require --dev phpunit/phpunit:~8
cd build/integration && composer require --dev phpunit/phpunit:~9
- name: Checkout app
uses: actions/checkout@v3
@@ -62,7 +70,7 @@ jobs:
path: apps/${{ env.APP_NAME }}
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@2.18.0
uses: shivammathur/setup-php@2.21.2
with:
php-version: ${{ matrix.php-versions }}
tools: phpunit

View File

@@ -19,7 +19,7 @@ jobs:
steps:
- uses: actions/checkout@v3
- name: Set up php${{ matrix.php-versions }}
uses: shivammathur/setup-php@2.18.0
uses: shivammathur/setup-php@2.21.2
with:
php-version: ${{ matrix.php-versions }}
coverage: none
@@ -33,7 +33,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v3
- name: Set up php
uses: shivammathur/setup-php@2.18.0
uses: shivammathur/setup-php@2.21.2
with:
php-version: 7.4
coverage: none

View File

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

View File

@@ -2,6 +2,14 @@ name: PHPUnit
on:
pull_request:
paths:
- '.github/workflows/phpunit.yml'
- 'appinfo/**'
- 'lib/**'
- 'templates/**'
- 'tests/**'
- 'composer.json'
- 'composer.lock'
push:
branches:
- master
@@ -20,7 +28,7 @@ jobs:
matrix:
php-versions: ['7.4', '8.0', '8.1']
databases: ['sqlite', 'mysql', 'pgsql']
server-versions: ['stable24']
server-versions: ['stable25']
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
@@ -62,7 +70,7 @@ jobs:
path: apps/${{ env.APP_NAME }}
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@2.18.0
uses: shivammathur/setup-php@2.21.2
with:
php-version: ${{ matrix.php-versions }}
tools: phpunit

View File

@@ -1,51 +1,106 @@
# Changelog
All notable changes to this project will be documented in this file.
## 1.7.4
## 1.8.5
### Fixed
- Gracefully handle not found card for a share [#4569](https://github.com/nextcloud/deck/pull/4569)
- fix: Use passed userid when getting attachment folder [#4541](https://github.com/nextcloud/deck/pull/4541)
- fix: Append datetime picker to body to avoid cut off [#4646](https://github.com/nextcloud/deck/pull/4646)
- Permanently delete deck cards marked as deleted after 5 min in a cron job [#4302](https://github.com/nextcloud/deck/pull/4302)
- Fix : Overlapping expiry dates on tags [#4538](https://github.com/nextcloud/deck/pull/4538)
- Update dependencies
- fix: Properly overwrite z-index of datepicker above modal [#4667](https://github.com/nextcloud/deck/pull/4667)
## 1.7.3
## 1.8.4
### Fixed
- feat: add validators to check values in services @juliushaertl [#4176](https://github.com/nextcloud/deck/pull/4176)
- Add integration test for attachment handling on cards [#4178](https://github.com/nextcloud/deck/pull/4178)
- disables autocomplete on card creation @juliushaertl [#4182](https://github.com/nextcloud/deck/pull/4182)
- minor style fixes [#4202](https://github.com/nextcloud/deck/pull/4202)
- fix: Use passed userid when getting attachment folder [#4540](https://github.com/nextcloud/deck/pull/4540)
- fix: Adapt NcEmptyContent usages to new slots [#4563](https://github.com/nextcloud/deck/pull/4563)
- Gracefully handle not found card for a share [#4568](https://github.com/nextcloud/deck/pull/4568)
- allow user to toggle visibility of the calendar for a deck board [#4626](https://github.com/nextcloud/deck/pull/4626)
- fix: Append datetime picker to body to avoid cut off [#4645](https://github.com/nextcloud/deck/pull/4645)
- Fix : Overlapping expiry dates on tags [#4536](https://github.com/nextcloud/deck/pull/4536)
- Better display of card dates (creation and change dates) [#4620](https://github.com/nextcloud/deck/pull/4620)
- Dependency updates
## 1.7.2
## 1.8.3
### Fixed
- Cache user membership for circles [#4132](https://github.com/nextcloud/deck/pull/4132)
- Set event link also for notifications that get emitted from activities [#4118](https://github.com/nextcloud/deck/pull/4118)
- Fix Card menu not displaying when description is not set [#4103](https://github.com/nextcloud/deck/pull/4103)
- disable Create card button while no stack is chosen [#4019](https://github.com/nextcloud/deck/pull/4019)
- to nextcloud/OCP package in stable24 [#4093](https://github.com/nextcloud/deck/pull/4093)
- Fix attachment creator name: show display name [#4037](https://github.com/nextcloud/deck/pull/4037)
- Use capped memory cache for board permissions [#3997](https://github.com/nextcloud/deck/pull/3997)
- Improve CalDAV integration performance [#3995](https://github.com/nextcloud/deck/pull/3995)
- Fetch attachment folder for the correct user during cron job [#3959](https://github.com/nextcloud/deck/pull/3959)
- Switch to 'markdown-it-task-checkbox' for rendering of task lists [#3925](https://github.com/nextcloud/deck/pull/3925)
- Prevent opening card and applyLabelFilter on card drag end [#3917](https://github.com/nextcloud/deck/pull/3917)
- Fix for issue #3637 [#3901](https://github.com/nextcloud/deck/pull/3901)
- Fix z-index for deck sidebar [#3885](https://github.com/nextcloud/deck/pull/3885)
- Fix component renaming so that acl works on shares again [#4328](https://github.com/nextcloud/deck/pull/4328)
- Permanently delete deck cards marked as deleted after 5 min in a cron job [#4301](https://github.com/nextcloud/deck/pull/4301)
- Dependency updates
## 1.7.1
## 1.8.2
### Fixed
- Align Duedate-delete icon properly - fixes nextcloud/deck#3791 [#3817](https://github.com/nextcloud/deck/pull/3817)
- Increase file count after sharing [#3806](https://github.com/nextcloud/deck/pull/3806)
- Fetch full board data after cloning [#3781](https://github.com/nextcloud/deck/pull/3781)
- minor style fixes [#4201](https://github.com/nextcloud/deck/pull/4201)
- feat: add validators to check values in services [#4174](https://github.com/nextcloud/deck/pull/4174)
- Add integration test for attachment handling on cards [#4179](https://github.com/nextcloud/deck/pull/4179)
- Add missing userId property [#4198](https://github.com/nextcloud/deck/pull/4198)
## 1.8.1
### Fixed
- Fix Duedate activity @nickvergessen [#4155](https://github.com/nextcloud/deck/pull/4155)
## 1.8.0
### Added
- Nextcloud 25 compatibility
- Performance improvements
- Use capped memory cache for board permissions @juliushaertl [#3980](https://github.com/nextcloud/deck/pull/3980)
- Improve CalDAV integration performance @juliushaertl [#3982](https://github.com/nextcloud/deck/pull/3982)
- Simpify query for getting shared files @juliushaertl [#3983](https://github.com/nextcloud/deck/pull/3983)
- Accessibility improvements
- Add a11y label for sidebar button @marcelklehr [#3986](https://github.com/nextcloud/deck/pull/3986)
- Improve filter popover accessibility @juliushaertl [#3820](https://github.com/nextcloud/deck/pull/3820)
- Set ids to skip to content/navigation @juliushaertl [#3924](https://github.com/nextcloud/deck/pull/3924)
- Invert icons properly in dark mode @juliushaertl [#3939](https://github.com/nextcloud/deck/pull/3939)
- Implement card reference widget @eneiluj [#4031](https://github.com/nextcloud/deck/pull/4031)
- Implement new dashboard widget interfaces @eneiluj [#4033](https://github.com/nextcloud/deck/pull/4033)
- Add related resources panel to board sharing tab sidebar @Pytal [#4000](https://github.com/nextcloud/deck/pull/4000)
### Fixed
- Fix sorting stacks [#4116](https://github.com/nextcloud/deck/pull/4116)
- Fix issue with duedate format [#4140](https://github.com/nextcloud/deck/pull/4140)
- Fix missing icon for activity rendering [#4090](https://github.com/nextcloud/deck/pull/4090)
- disables autocomplete on card creation [#4142](https://github.com/nextcloud/deck/pull/4142)
- Set event link also for notifications that get emitted from activities [#4117](https://github.com/nextcloud/deck/pull/4117)
- Fix attachment creator name: show display name @eneiluj [#4036](https://github.com/nextcloud/deck/pull/4036)
- Fix reference provider when caching @eneiluj [#4056](https://github.com/nextcloud/deck/pull/4056)
- Use global import for nextcloud-vue [#4072](https://github.com/nextcloud/deck/pull/4072)
- Disable Create card button while no stack is chosen @icewind1991 [#4014](https://github.com/nextcloud/deck/pull/4014)
- Adjust testing matrix for Nextcloud 25 on stable25 @nickvergessen [#4068](https://github.com/nextcloud/deck/pull/4068)
- Fix Card menu not displaying when description is not set @marcelklehr [#4105](https://github.com/nextcloud/deck/pull/4105)
- Reference widget adjustments for Text [#4075](https://github.com/nextcloud/deck/pull/4075)
- use OCP\Collaboration\Reference\Reference [#4078](https://github.com/nextcloud/deck/pull/4078)
- Cache user membership for circles [#4141](https://github.com/nextcloud/deck/pull/4141)
- set last modified when the card was found. Fixes #3763 @ylebre [#3796](https://github.com/nextcloud/deck/pull/3796)
- Increase file count after sharing @luka-nextcloud [#3682](https://github.com/nextcloud/deck/pull/3682)
- Align Duedate-delete icon properly - fixes nextcloud/deck#3791 @Ben-Ro [#3811](https://github.com/nextcloud/deck/pull/3811)
- Fix for issue #3637 @flummer [#3833](https://github.com/nextcloud/deck/pull/3833)
- Switch to 'markdown-it-task-checkbox' for rendering of task lists @q-wertz [#3898](https://github.com/nextcloud/deck/pull/3898)
- Make rename functions accessibly by keyboard navigation @juliushaertl [#3813](https://github.com/nextcloud/deck/pull/3813)
- Prevent opening card and applyLabelFilter on card drag end @eneiluj [#3916](https://github.com/nextcloud/deck/pull/3916)
- Inserted required property in the rename list field, to prevent the l… @mstolf [#3862](https://github.com/nextcloud/deck/pull/3862)
- Fix share provider for master changes @nickvergessen [#3942](https://github.com/nextcloud/deck/pull/3942)
- Fetch attachment folder for the correct user during cron job @juliushaertl [#3952](https://github.com/nextcloud/deck/pull/3952)
- Fix z-index for deck sidebar @Raudius [#3884](https://github.com/nextcloud/deck/pull/3884)
### Other
- Switch from OC::$server->get to OCP\Server::get @CarlSchwan [#3801](https://github.com/nextcloud/deck/pull/3801)
- Add performance section in README @eneiluj [#3830](https://github.com/nextcloud/deck/pull/3830)
- Fix static analysis by stubbing more circle methods @juliushaertl [#3900](https://github.com/nextcloud/deck/pull/3900)
- fix(docs): fix links to JSON schemas for Trello @wiktor2200 [#3872](https://github.com/nextcloud/deck/pull/3872)
- Move to OCP\Collaboration\Resources\LoadAdditionalScriptsEvent @juliushaertl [#3818](https://github.com/nextcloud/deck/pull/3818)
- Rename settings to deck settings @PVince81 [#3928](https://github.com/nextcloud/deck/pull/3928)
- SCSS cleanup @juliushaertl [#3803](https://github.com/nextcloud/deck/pull/3803)
- Hide deprecated projects in sidebar and card details by default @Pytal [#3984](https://github.com/nextcloud/deck/pull/3984)
## 1.7.0
@@ -97,7 +152,7 @@ All notable changes to this project will be documented in this file.
- Adapt the card modal to upstream changes [#3764](https://github.com/nextcloud/deck/pull/3764)
- Fix text selection in dark mode and modal view [#3765](https://github.com/nextcloud/deck/pull/3765)
- Add missing indices [#3754](https://github.com/nextcloud/deck/pull/3754)
- Handle qb mapper exception messages properly @juliushaertl [#3769](https://github.com/nextcloud/deck/pull/3769)
## 1.6.0-beta1
@@ -468,7 +523,7 @@ Android app team for helping to improve our REST API:
- Fix comment activities on Nextcloud 15
- Fix issues with Edge
- API: Fix numeric types that were returned as strings
- API: Fix If-Modified-Since header parsing
- API: Fix If-Modified-Since header parsing
## 0.5.1 - 2018-12-05
@@ -595,7 +650,7 @@ Android app team for helping to improve our REST API:
### Fixed
- Various frontend fixes
- Fix sidebar drag issues
- Improvements for IE11
- Improvements for IE11
- Fix bug when draging a card to an empty stack
## 0.2.1 - 2017-07-04
@@ -669,7 +724,7 @@ Android app team for helping to improve our REST API:
### Fixed
- Various styling improvements
- Fix problems with MySQL and PostgreSQL
- Fix problems with MySQL and PostgreSQL
- Select first color by default when creating boards
- Fix error when changing board permissions
@@ -677,9 +732,9 @@ Android app team for helping to improve our REST API:
### Added
- Sharing boards with other users
- Create and manage boards
- Create and manage boards
- Sort cards on stacks by drag-and-drop
- Assign labels
- Markdown notes for each card
- Archive cards
- Archive cards

View File

@@ -24,9 +24,9 @@ Deck is a kanban style organization tool aimed at personal planning and project
### 3rd-Party Integrations
- [trello-to-deck](https://github.com/maxammann/trello-to-deck) - Migrates cards from Trello
- [mail2deck](https://github.com/newroco/mail2deck) - Provides an "email in" solution
- [mail2deck](https://github.com/newroco/mail2deck) - Provides an "email in" solution
- [A-deck](https://github.com/leoossa/A-deck) - Chrome Extension that allows to create new card in selected stack based on current tab
## Installation/Update
This app is supposed to work on the two latest Nextcloud versions.
@@ -52,6 +52,17 @@ Please make sure you have installed the following dependencies: `make, which, ta
Instead of setting everything up manually, you can just [download the nightly build](https://github.com/nextcloud/deck/releases/tag/nightly) instead. These builds are updated every 24 hours, and are pre-configured with all the needed dependencies.
## Performance limitations
Deck is not yet ready for intensive usage.
A lot of database queries are generated when the number of boards, cards and attachments is high.
For example, a user having access to 13 boards, with each board having on average 100 cards,
and each card having on average 5 attachments,
would generate 6500 database queries when doing the file related queries
which would increase the page loading time significantly.
Improvements on Nextcloud server and Deck itself will improve the situation.
## Developing
### PHP
@@ -60,6 +71,8 @@ Nothing to prepare, just dig into the code.
### JavaScript
This requires at least Node 14 and npm 7 to be installed.
Deck requires running a `make build-js` to install npm dependencies and build the JavaScript code using webpack. While developing you can also use `make watch` to rebuild everytime the code changes.
#### Hot reloading

View File

@@ -16,7 +16,7 @@
- 🚀 Get your project organized
</description>
<version>1.7.4</version>
<version>1.8.5</version>
<licence>agpl</licence>
<author>Julius Härtl</author>
<namespace>Deck</namespace>
@@ -34,7 +34,7 @@
<database min-version="9.4">pgsql</database>
<database>sqlite</database>
<database min-version="8.0">mysql</database>
<nextcloud min-version="24" max-version="24"/>
<nextcloud min-version="25" max-version="25"/>
</dependencies>
<background-jobs>
<job>OCA\Deck\Cron\DeleteCron</job>

View File

@@ -19,7 +19,7 @@
"symfony/event-dispatcher": "^4.0",
"vimeo/psalm": "^4.3",
"php-parallel-lint/php-parallel-lint": "^1.2",
"nextcloud/ocp": "dev-stable24"
"nextcloud/ocp": "dev-stable25"
},
"config": {
"optimize-autoloader": true,
@@ -36,6 +36,7 @@
"cs:check": "php-cs-fixer fix --dry-run --diff",
"cs:fix": "php-cs-fixer fix",
"psalm": "psalm",
"psalm:update-baseline": "psalm --update-baseline",
"psalm:fix": "psalm --alter --issues=InvalidReturnType,InvalidNullableReturnType,MismatchingDocblockParamType,MismatchingDocblockReturnType,MissingParamType,InvalidFalsableReturnType",
"test": [
"@test:unit",

365
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": "fdd039ec52f9c829403494423b527e10",
"content-hash": "445858d371d9a1c7057d0603c566966a",
"packages": [
{
"name": "cogpowered/finediff",
@@ -63,16 +63,16 @@
},
{
"name": "justinrainbow/json-schema",
"version": "5.2.11",
"version": "5.2.12",
"source": {
"type": "git",
"url": "https://github.com/justinrainbow/json-schema.git",
"reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa"
"reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ab6744b7296ded80f8cc4f9509abbff393399aa",
"reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa",
"url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/ad87d5a5ca981228e0e205c2bc7dfb8e24559b60",
"reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60",
"shasum": ""
},
"require": {
@@ -127,9 +127,9 @@
],
"support": {
"issues": "https://github.com/justinrainbow/json-schema/issues",
"source": "https://github.com/justinrainbow/json-schema/tree/5.2.11"
"source": "https://github.com/justinrainbow/json-schema/tree/5.2.12"
},
"time": "2021-07-22T09:24:00+00:00"
"time": "2022-04-13T08:02:27+00:00"
}
],
"packages-dev": [
@@ -445,16 +445,16 @@
},
{
"name": "composer/semver",
"version": "3.2.9",
"version": "3.3.2",
"source": {
"type": "git",
"url": "https://github.com/composer/semver.git",
"reference": "a951f614bd64dcd26137bc9b7b2637ddcfc57649"
"reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/semver/zipball/a951f614bd64dcd26137bc9b7b2637ddcfc57649",
"reference": "a951f614bd64dcd26137bc9b7b2637ddcfc57649",
"url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9",
"reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9",
"shasum": ""
},
"require": {
@@ -506,7 +506,7 @@
"support": {
"irc": "irc://irc.freenode.org/composer",
"issues": "https://github.com/composer/semver/issues",
"source": "https://github.com/composer/semver/tree/3.2.9"
"source": "https://github.com/composer/semver/tree/3.3.2"
},
"funding": [
{
@@ -522,7 +522,7 @@
"type": "tidelift"
}
],
"time": "2022-02-04T13:58:43+00:00"
"time": "2022-04-01T19:23:25+00:00"
},
{
"name": "composer/xdebug-handler",
@@ -896,16 +896,16 @@
},
{
"name": "felixfbecker/language-server-protocol",
"version": "1.5.1",
"version": "v1.5.2",
"source": {
"type": "git",
"url": "https://github.com/felixfbecker/php-language-server-protocol.git",
"reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730"
"reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/9d846d1f5cf101deee7a61c8ba7caa0a975cd730",
"reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730",
"url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/6e82196ffd7c62f7794d778ca52b69feec9f2842",
"reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842",
"shasum": ""
},
"require": {
@@ -946,9 +946,9 @@
],
"support": {
"issues": "https://github.com/felixfbecker/php-language-server-protocol/issues",
"source": "https://github.com/felixfbecker/php-language-server-protocol/tree/1.5.1"
"source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.2"
},
"time": "2021-02-22T14:02:09+00:00"
"time": "2022-03-02T22:36:06+00:00"
},
{
"name": "friendsofphp/php-cs-fixer",
@@ -1192,16 +1192,16 @@
},
{
"name": "nextcloud/ocp",
"version": "dev-stable24",
"version": "dev-stable25",
"source": {
"type": "git",
"url": "https://github.com/nextcloud-deps/ocp.git",
"reference": "0b89697ba1146d48506132c452cf548adb2a9cb8"
"reference": "1e34a80be034fe9a58057d2e756913363675bddb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/0b89697ba1146d48506132c452cf548adb2a9cb8",
"reference": "0b89697ba1146d48506132c452cf548adb2a9cb8",
"url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/1e34a80be034fe9a58057d2e756913363675bddb",
"reference": "1e34a80be034fe9a58057d2e756913363675bddb",
"shasum": ""
},
"require": {
@@ -1213,7 +1213,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "24.0.0-dev"
"dev-master": "26.0.0-dev"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1229,22 +1229,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/stable24"
"source": "https://github.com/nextcloud-deps/ocp/tree/stable25"
},
"time": "2023-03-16T00:40:04+00:00"
"time": "2023-05-13T00:33:04+00:00"
},
{
"name": "nikic/php-parser",
"version": "v4.13.2",
"version": "v4.14.0",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "210577fe3cf7badcc5814d99455df46564f3c077"
"reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077",
"reference": "210577fe3cf7badcc5814d99455df46564f3c077",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1",
"reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1",
"shasum": ""
},
"require": {
@@ -1285,9 +1285,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
"source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2"
"source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0"
},
"time": "2021-11-30T19:35:32+00:00"
"time": "2022-05-31T20:59:12+00:00"
},
{
"name": "openlss/lib-array2xml",
@@ -1722,92 +1722,25 @@
},
"time": "2022-03-15T21:29:03+00:00"
},
{
"name": "phpspec/prophecy",
"version": "v1.15.0",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
"reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
"reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
"shasum": ""
},
"require": {
"doctrine/instantiator": "^1.2",
"php": "^7.2 || ~8.0, <8.2",
"phpdocumentor/reflection-docblock": "^5.2",
"sebastian/comparator": "^3.0 || ^4.0",
"sebastian/recursion-context": "^3.0 || ^4.0"
},
"require-dev": {
"phpspec/phpspec": "^6.0 || ^7.0",
"phpunit/phpunit": "^8.0 || ^9.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.x-dev"
}
},
"autoload": {
"psr-4": {
"Prophecy\\": "src/Prophecy"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Konstantin Kudryashov",
"email": "ever.zet@gmail.com",
"homepage": "http://everzet.com"
},
{
"name": "Marcello Duarte",
"email": "marcello.duarte@gmail.com"
}
],
"description": "Highly opinionated mocking framework for PHP 5.3+",
"homepage": "https://github.com/phpspec/prophecy",
"keywords": [
"Double",
"Dummy",
"fake",
"mock",
"spy",
"stub"
],
"support": {
"issues": "https://github.com/phpspec/prophecy/issues",
"source": "https://github.com/phpspec/prophecy/tree/v1.15.0"
},
"time": "2021-12-08T12:19:24+00:00"
},
{
"name": "phpunit/php-code-coverage",
"version": "9.2.15",
"version": "9.2.17",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
"reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f"
"reference": "aa94dc41e8661fe90c7316849907cba3007b10d8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
"reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/aa94dc41e8661fe90c7316849907cba3007b10d8",
"reference": "aa94dc41e8661fe90c7316849907cba3007b10d8",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*",
"ext-xmlwriter": "*",
"nikic/php-parser": "^4.13.0",
"nikic/php-parser": "^4.14",
"php": ">=7.3",
"phpunit/php-file-iterator": "^3.0.3",
"phpunit/php-text-template": "^2.0.2",
@@ -1856,7 +1789,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15"
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.17"
},
"funding": [
{
@@ -1864,7 +1797,7 @@
"type": "github"
}
],
"time": "2022-03-07T09:28:20+00:00"
"time": "2022-08-30T12:24:04+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -2109,16 +2042,16 @@
},
{
"name": "phpunit/phpunit",
"version": "9.5.20",
"version": "9.5.24",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba"
"reference": "d0aa6097bef9fd42458a9b3c49da32c6ce6129c5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba",
"reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d0aa6097bef9fd42458a9b3c49da32c6ce6129c5",
"reference": "d0aa6097bef9fd42458a9b3c49da32c6ce6129c5",
"shasum": ""
},
"require": {
@@ -2133,7 +2066,6 @@
"phar-io/manifest": "^2.0.3",
"phar-io/version": "^3.0.2",
"php": ">=7.3",
"phpspec/prophecy": "^1.12.1",
"phpunit/php-code-coverage": "^9.2.13",
"phpunit/php-file-iterator": "^3.0.5",
"phpunit/php-invoker": "^3.1.1",
@@ -2148,13 +2080,9 @@
"sebastian/global-state": "^5.0.1",
"sebastian/object-enumerator": "^4.0.3",
"sebastian/resource-operations": "^3.0.3",
"sebastian/type": "^3.0",
"sebastian/type": "^3.1",
"sebastian/version": "^3.0.2"
},
"require-dev": {
"ext-pdo": "*",
"phpspec/prophecy-phpunit": "^2.0.1"
},
"suggest": {
"ext-soap": "*",
"ext-xdebug": "*"
@@ -2196,7 +2124,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20"
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.24"
},
"funding": [
{
@@ -2208,7 +2136,7 @@
"type": "github"
}
],
"time": "2022-04-01T12:37:26+00:00"
"time": "2022-08-30T07:42:16+00:00"
},
{
"name": "psr/cache",
@@ -3205,16 +3133,16 @@
},
{
"name": "sebastian/environment",
"version": "5.1.3",
"version": "5.1.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
"reference": "388b6ced16caa751030f6a69e588299fa09200ac"
"reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
"reference": "388b6ced16caa751030f6a69e588299fa09200ac",
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7",
"reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7",
"shasum": ""
},
"require": {
@@ -3256,7 +3184,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/environment/issues",
"source": "https://github.com/sebastianbergmann/environment/tree/5.1.3"
"source": "https://github.com/sebastianbergmann/environment/tree/5.1.4"
},
"funding": [
{
@@ -3264,7 +3192,7 @@
"type": "github"
}
],
"time": "2020-09-28T05:52:38+00:00"
"time": "2022-04-03T09:37:03+00:00"
},
{
"name": "sebastian/exporter",
@@ -3696,16 +3624,16 @@
},
{
"name": "sebastian/type",
"version": "3.0.0",
"version": "3.1.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/type.git",
"reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad"
"reference": "fb44e1cc6e557418387ad815780360057e40753e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad",
"reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad",
"url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb44e1cc6e557418387ad815780360057e40753e",
"reference": "fb44e1cc6e557418387ad815780360057e40753e",
"shasum": ""
},
"require": {
@@ -3717,7 +3645,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0-dev"
"dev-master": "3.1-dev"
}
},
"autoload": {
@@ -3740,7 +3668,7 @@
"homepage": "https://github.com/sebastianbergmann/type",
"support": {
"issues": "https://github.com/sebastianbergmann/type/issues",
"source": "https://github.com/sebastianbergmann/type/tree/3.0.0"
"source": "https://github.com/sebastianbergmann/type/tree/3.1.0"
},
"funding": [
{
@@ -3748,7 +3676,7 @@
"type": "github"
}
],
"time": "2022-03-15T09:54:48+00:00"
"time": "2022-08-29T06:55:37+00:00"
},
{
"name": "sebastian/version",
@@ -3805,16 +3733,16 @@
},
{
"name": "symfony/console",
"version": "v5.4.5",
"version": "v5.4.12",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "d8111acc99876953f52fe16d4c50eb60940d49ad"
"reference": "c072aa8f724c3af64e2c7a96b796a4863d24dba1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/d8111acc99876953f52fe16d4c50eb60940d49ad",
"reference": "d8111acc99876953f52fe16d4c50eb60940d49ad",
"url": "https://api.github.com/repos/symfony/console/zipball/c072aa8f724c3af64e2c7a96b796a4863d24dba1",
"reference": "c072aa8f724c3af64e2c7a96b796a4863d24dba1",
"shasum": ""
},
"require": {
@@ -3884,7 +3812,7 @@
"terminal"
],
"support": {
"source": "https://github.com/symfony/console/tree/v5.4.5"
"source": "https://github.com/symfony/console/tree/v5.4.12"
},
"funding": [
{
@@ -3900,20 +3828,20 @@
"type": "tidelift"
}
],
"time": "2022-02-24T12:45:35+00:00"
"time": "2022-08-17T13:18:05+00:00"
},
{
"name": "symfony/deprecation-contracts",
"version": "v2.5.0",
"version": "v2.5.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
"reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8"
"reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/6f981ee24cf69ee7ce9736146d1c57c2780598a8",
"reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
"reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
"shasum": ""
},
"require": {
@@ -3951,7 +3879,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.0"
"source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2"
},
"funding": [
{
@@ -3967,7 +3895,7 @@
"type": "tidelift"
}
],
"time": "2021-07-12T14:48:14+00:00"
"time": "2022-01-02T09:53:40+00:00"
},
{
"name": "symfony/event-dispatcher",
@@ -4055,16 +3983,16 @@
},
{
"name": "symfony/event-dispatcher-contracts",
"version": "v1.1.11",
"version": "v1.1.13",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
"reference": "01e9a4efac0ee33a05dfdf93b346f62e7d0e998c"
"reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/01e9a4efac0ee33a05dfdf93b346f62e7d0e998c",
"reference": "01e9a4efac0ee33a05dfdf93b346f62e7d0e998c",
"url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/1d5cd762abaa6b2a4169d3e77610193a7157129e",
"reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e",
"shasum": ""
},
"require": {
@@ -4114,7 +4042,7 @@
"standards"
],
"support": {
"source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.11"
"source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.13"
},
"funding": [
{
@@ -4130,7 +4058,7 @@
"type": "tidelift"
}
],
"time": "2021-03-23T15:25:38+00:00"
"time": "2022-01-02T09:41:36+00:00"
},
{
"name": "symfony/filesystem",
@@ -4330,16 +4258,16 @@
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.25.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "30885182c981ab175d4d034db0f6f469898070ab"
"reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab",
"reference": "30885182c981ab175d4d034db0f6f469898070ab",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
"reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
"shasum": ""
},
"require": {
@@ -4354,7 +4282,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -4392,7 +4320,7 @@
"portable"
],
"support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0"
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0"
},
"funding": [
{
@@ -4408,20 +4336,20 @@
"type": "tidelift"
}
],
"time": "2021-10-20T20:35:02+00:00"
"time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-intl-grapheme",
"version": "v1.25.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
"reference": "81b86b50cf841a64252b439e738e97f4a34e2783"
"reference": "433d05519ce6990bf3530fba6957499d327395c2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783",
"reference": "81b86b50cf841a64252b439e738e97f4a34e2783",
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2",
"reference": "433d05519ce6990bf3530fba6957499d327395c2",
"shasum": ""
},
"require": {
@@ -4433,7 +4361,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -4473,7 +4401,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.25.0"
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0"
},
"funding": [
{
@@ -4489,20 +4417,20 @@
"type": "tidelift"
}
],
"time": "2021-11-23T21:10:46+00:00"
"time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
"version": "v1.25.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
"reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
"reference": "219aa369ceff116e673852dce47c3a41794c14bd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
"reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd",
"reference": "219aa369ceff116e673852dce47c3a41794c14bd",
"shasum": ""
},
"require": {
@@ -4514,7 +4442,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -4557,7 +4485,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0"
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0"
},
"funding": [
{
@@ -4573,20 +4501,20 @@
"type": "tidelift"
}
],
"time": "2021-02-19T12:13:01+00:00"
"time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.25.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825"
"reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825",
"reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
"reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
"shasum": ""
},
"require": {
@@ -4601,7 +4529,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -4640,7 +4568,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0"
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0"
},
"funding": [
{
@@ -4656,20 +4584,20 @@
"type": "tidelift"
}
],
"time": "2021-11-30T18:21:41+00:00"
"time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-php73",
"version": "v1.25.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
"reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5"
"reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5",
"reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5",
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85",
"reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85",
"shasum": ""
},
"require": {
@@ -4678,7 +4606,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -4719,7 +4647,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0"
"source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0"
},
"funding": [
{
@@ -4735,20 +4663,20 @@
"type": "tidelift"
}
],
"time": "2021-06-05T21:20:04+00:00"
"time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-php80",
"version": "v1.25.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
"reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c"
"reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c",
"reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace",
"reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace",
"shasum": ""
},
"require": {
@@ -4757,7 +4685,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -4802,7 +4730,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0"
"source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0"
},
"funding": [
{
@@ -4818,7 +4746,7 @@
"type": "tidelift"
}
],
"time": "2022-03-04T08:16:47+00:00"
"time": "2022-05-10T07:21:04+00:00"
},
{
"name": "symfony/polyfill-php81",
@@ -4963,22 +4891,22 @@
},
{
"name": "symfony/service-contracts",
"version": "v2.5.0",
"version": "v2.5.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
"reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc"
"reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc",
"reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c",
"reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"psr/container": "^1.1",
"symfony/deprecation-contracts": "^2.1"
"symfony/deprecation-contracts": "^2.1|^3"
},
"conflict": {
"ext-psr": "<1.1|>=2"
@@ -5026,7 +4954,7 @@
"standards"
],
"support": {
"source": "https://github.com/symfony/service-contracts/tree/v2.5.0"
"source": "https://github.com/symfony/service-contracts/tree/v2.5.2"
},
"funding": [
{
@@ -5042,7 +4970,7 @@
"type": "tidelift"
}
],
"time": "2021-11-04T16:48:04+00:00"
"time": "2022-05-30T19:17:29+00:00"
},
{
"name": "symfony/stopwatch",
@@ -5108,16 +5036,16 @@
},
{
"name": "symfony/string",
"version": "v5.4.3",
"version": "v5.4.12",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
"reference": "92043b7d8383e48104e411bc9434b260dbeb5a10"
"reference": "2fc515e512d721bf31ea76bd02fe23ada4640058"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/92043b7d8383e48104e411bc9434b260dbeb5a10",
"reference": "92043b7d8383e48104e411bc9434b260dbeb5a10",
"url": "https://api.github.com/repos/symfony/string/zipball/2fc515e512d721bf31ea76bd02fe23ada4640058",
"reference": "2fc515e512d721bf31ea76bd02fe23ada4640058",
"shasum": ""
},
"require": {
@@ -5174,7 +5102,7 @@
"utf8"
],
"support": {
"source": "https://github.com/symfony/string/tree/v5.4.3"
"source": "https://github.com/symfony/string/tree/v5.4.12"
},
"funding": [
{
@@ -5190,7 +5118,7 @@
"type": "tidelift"
}
],
"time": "2022-01-02T09:53:40+00:00"
"time": "2022-08-12T17:03:11+00:00"
},
{
"name": "theseer/tokenizer",
@@ -5244,16 +5172,16 @@
},
{
"name": "vimeo/psalm",
"version": "4.22.0",
"version": "4.27.0",
"source": {
"type": "git",
"url": "https://github.com/vimeo/psalm.git",
"reference": "fc2c6ab4d5fa5d644d8617089f012f3bb84b8703"
"reference": "faf106e717c37b8c81721845dba9de3d8deed8ff"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/vimeo/psalm/zipball/fc2c6ab4d5fa5d644d8617089f012f3bb84b8703",
"reference": "fc2c6ab4d5fa5d644d8617089f012f3bb84b8703",
"url": "https://api.github.com/repos/vimeo/psalm/zipball/faf106e717c37b8c81721845dba9de3d8deed8ff",
"reference": "faf106e717c37b8c81721845dba9de3d8deed8ff",
"shasum": ""
},
"require": {
@@ -5278,6 +5206,7 @@
"php": "^7.1|^8",
"sebastian/diff": "^3.0 || ^4.0",
"symfony/console": "^3.4.17 || ^4.1.6 || ^5.0 || ^6.0",
"symfony/polyfill-php80": "^1.25",
"webmozart/path-util": "^2.3"
},
"provide": {
@@ -5344,27 +5273,27 @@
],
"support": {
"issues": "https://github.com/vimeo/psalm/issues",
"source": "https://github.com/vimeo/psalm/tree/4.22.0"
"source": "https://github.com/vimeo/psalm/tree/4.27.0"
},
"time": "2022-02-24T20:34:05+00:00"
"time": "2022-08-31T13:47:09+00:00"
},
{
"name": "webmozart/assert",
"version": "1.10.0",
"version": "1.11.0",
"source": {
"type": "git",
"url": "https://github.com/webmozarts/assert.git",
"reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
"reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
"reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
"url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
"reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0",
"symfony/polyfill-ctype": "^1.8"
"ext-ctype": "*",
"php": "^7.2 || ^8.0"
},
"conflict": {
"phpstan/phpstan": "<0.12.20",
@@ -5402,9 +5331,9 @@
],
"support": {
"issues": "https://github.com/webmozarts/assert/issues",
"source": "https://github.com/webmozarts/assert/tree/1.10.0"
"source": "https://github.com/webmozarts/assert/tree/1.11.0"
},
"time": "2021-03-09T10:59:23+00:00"
"time": "2022-06-03T18:03:27+00:00"
},
{
"name": "webmozart/path-util",

9
css/deck.css Normal file
View File

@@ -0,0 +1,9 @@
.icon-deck {
background-image: url(../img/deck-dark.svg);
filter: var(--background-invert-if-dark);
}
.icon-deck-white, .icon-deck.icon-white {
background-image: url(../img/deck.svg);
filter: var(--background-invert-if-dark);
}

View File

@@ -1 +0,0 @@
@include icon-black-white('deck', 'deck', 1);

View File

@@ -1,41 +0,0 @@
/**
* Custom icons
*/
@include icon-black-white('deck', 'deck', 1);
@include icon-black-white('archive', 'deck', 1);
@include icon-black-white('circles', 'deck', 1);
@include icon-black-white('clone', 'deck', 1);
@include icon-black-white('filter', 'deck', 1);
@include icon-black-white('filter_set', 'deck', 1);
@include icon-black-white('attach', 'deck', 1);
@include icon-black-white('reply', 'deck', 1);
@include icon-black-white('notifications-dark', 'deck', 1);
@include icon-black-white('description', 'deck', 1);
.icon-toggle-compact-collapsed {
@include icon-color('toggle-view-expand', 'deck', $color-black);
}
.icon-toggle-compact-expanded {
@include icon-color('toggle-view-collapse', 'deck', $color-black);
}
.icon-activity {
@include icon-color('activity-dark', 'activity', $color-black);
}
.icon-comment--unread {
@include icon-color('comment', 'actions', $color-primary, 1, true);
}
.avatardiv.circles {
background: var(--color-primary);
}
.icon-circles {
opacity: 1;
background-size: 20px;
background-position: center center;
}
.icon-colorpicker {
background-image: url('../img/color_picker.svg');
}

17
cypress.config.js Normal file
View File

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

View File

@@ -0,0 +1,41 @@
import { randHash } from '../utils'
const randUser = randHash()
describe('Board', function() {
const password = 'pass123'
before(function() {
cy.nextcloudCreateUser(randUser, password)
})
beforeEach(function() {
cy.login(randUser, password)
})
it('Can create a board', function() {
const board = 'TestBoard'
cy.intercept({
method: 'POST',
url: '/index.php/apps/deck/boards',
}).as('createBoardRequest')
// Click "Add board"
cy.openLeftSidebar()
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
.eq(3).find('a').first().click({ force: true })
// Type the board title
cy.get('.board-create form input[type=text]')
.type(board, { force: true })
// Submit
cy.get('.board-create form input[type=submit]')
.first().click({ force: true })
cy.wait('@createBoardRequest').its('response.statusCode').should('equal', 200)
cy.get('.app-navigation__list .app-navigation-entry__children .app-navigation-entry')
.contains(board).should('be.visible')
})
})

View File

@@ -0,0 +1,67 @@
import { randHash } from '../utils'
const randUser = randHash()
const testBoardData = {
title: 'MyBoardTest',
color: '00ff00',
stacks: [
{
title: 'TestList',
cards: [
{
title: 'Hello world',
},
],
},
],
}
describe('Card', function() {
before(function() {
cy.nextcloudCreateUser(randUser, randUser)
cy.createExampleBoard({
user: randUser,
password: randUser,
board: testBoardData,
})
})
beforeEach(function() {
cy.login(randUser, randUser)
})
it('Can show card details modal', function() {
cy.openLeftSidebar()
cy.getNavigationEntry(testBoardData.title)
.first().click({ force: true })
cy.get('.board .stack').eq(0).within(() => {
cy.get('.card:contains("Hello world")').should('be.visible').click()
})
cy.get('.modal__card').should('be.visible')
cy.get('.app-sidebar-header__maintitle').contains('Hello world')
})
it('Can add a card', function() {
const newCardTitle = 'Write some cypress tests'
cy.openLeftSidebar()
cy.getNavigationEntry(testBoardData.title)
.first().click({ force: true })
cy.get('.board .stack').eq(0).within(() => {
cy.get('.card:contains("Hello world")').should('be.visible')
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')
})
})
})

View File

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

View File

@@ -0,0 +1,30 @@
import { randHash } from '../utils'
const randUser = randHash()
describe('Stack', function() {
const board = 'TestBoard'
const password = 'pass123'
const stack = 'List 1'
before(function() {
cy.nextcloudCreateUser(randUser, password)
cy.deckCreateBoard({ user: randUser, password }, board)
})
beforeEach(function() {
cy.logout()
cy.login(randUser, password)
})
it('Can create a stack', function() {
cy.openLeftSidebar()
cy.getNavigationEntry(board)
.click({ force: true })
cy.get('#stack-add button').first().click()
cy.get('#stack-add form input#new-stack-input-main').type(stack)
cy.get('#stack-add form input[type=submit]').first().click()
cy.get('.board .stack').eq(0).contains(stack).should('be.visible')
})
})

View File

@@ -0,0 +1,5 @@
{
"name": "Using fixtures to represent data",
"email": "hello@cypress.io",
"body": "Fixtures are a great way to mock data for responses to routes"
}

22
cypress/plugins/index.js Normal file
View File

@@ -0,0 +1,22 @@
/// <reference types="cypress" />
// ***********************************************************
// This example plugins/index.js can be used to load plugins
//
// You can change the location of this file or turn off loading
// the plugins file with the 'pluginsFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/plugins-guide
// ***********************************************************
// This function is called when a project is opened or re-opened (e.g. due to
// the project's config changing)
/**
* @type {Cypress.PluginConfig}
*/
// eslint-disable-next-line no-unused-vars
module.exports = (on, config) => {
// `on` is used to hook into various events Cypress emits
// `config` is the resolved Cypress config
}

159
cypress/support/commands.js Normal file
View File

@@ -0,0 +1,159 @@
/**
* @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>
*
* @author John Molakvoæ <skjnldsv@protonmail.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/>.
*
*/
const url = Cypress.config('baseUrl').replace(/\/index.php\/?$/g, '')
Cypress.env('baseUrl', url)
Cypress.Commands.add('login', (user, password, route = '/apps/deck/') => {
const session = `${user}-${Date.now()}`
cy.session(session, function() {
cy.visit(route)
cy.get('input[name=user]').type(user)
cy.get('input[name=password]').type(password)
cy.get('form[name=login] [type=submit]').click()
cy.url().should('include', route)
})
cy.visit(route)
})
Cypress.Commands.add('logout', (route = '/') => {
cy.session('_guest', function() {})
})
Cypress.Commands.add('nextcloudCreateUser', (user, password) => {
cy.clearCookies()
cy.request({
method: 'POST',
url: `${Cypress.env('baseUrl')}/ocs/v1.php/cloud/users?format=json`,
form: true,
body: {
userid: user,
password,
},
auth: { user: 'admin', pass: 'admin' },
headers: {
'OCS-ApiRequest': 'true',
'Content-Type': 'application/x-www-form-urlencoded',
},
}).then((response) => {
cy.log(`Created user ${user}`, response.status)
})
})
Cypress.Commands.add('nextcloudUpdateUser', (user, password, key, value) => {
cy.request({
method: 'PUT',
url: `${Cypress.env('baseUrl')}/ocs/v2.php/cloud/users/${user}`,
form: true,
body: { key, value },
auth: { user, pass: password },
headers: {
'OCS-ApiRequest': 'true',
'Content-Type': 'application/x-www-form-urlencoded',
},
}).then((response) => {
cy.log(`Updated user ${user} ${key} to ${value}`, response.status)
})
})
Cypress.Commands.add('openLeftSidebar', () => {
cy.get('.app-navigation button.app-navigation-toggle').click()
})
Cypress.Commands.add('deckCreateBoard', ({ user, password }, title) => {
cy.login(user, password)
cy.get('.app-navigation button.app-navigation-toggle').click()
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
.eq(3)
.find('a')
.first()
.click({ force: true })
cy.get('.board-create form input[type=text]').type(title, { force: true })
cy.get('.board-create form input[type=submit]')
.first()
.click({ force: true })
})
Cypress.Commands.add('deckCreateList', ({ user, password }, title) => {
cy.login(user, password)
cy.get('.app-navigation button.app-navigation-toggle').click()
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
.eq(3)
.find('a.app-navigation-entry-link')
.first()
.click({ force: true })
cy.get('#stack-add button').first().click()
cy.get('#stack-add form input#new-stack-input-main').type(title)
cy.get('#stack-add form input[type=submit]').first().click()
})
Cypress.Commands.add('createExampleBoard', ({ user, password, board }) => {
cy.request({
method: 'POST',
url: `${Cypress.env('baseUrl')}/index.php/apps/deck/api/v1.0/boards`,
auth: {
user,
password,
},
body: { title: board.title, color: board.color ?? 'ff0000' },
}).then((boardResponse) => {
expect(boardResponse.status).to.eq(200)
const boardData = boardResponse.body
for (const stackIndex in board.stacks) {
const stack = board.stacks[stackIndex]
cy.request({
method: 'POST',
url: `${Cypress.env('baseUrl')}/index.php/apps/deck/api/v1.0/boards/${boardData.id}/stacks`,
auth: {
user,
password,
},
body: { title: stack.title, order: 0 },
}).then((stackResponse) => {
const stackData = stackResponse.body
for (const cardIndex in stack.cards) {
const card = stack.cards[cardIndex]
cy.request({
method: 'POST',
url: `${Cypress.env('baseUrl')}/index.php/apps/deck/api/v1.0/boards/${boardData.id}/stacks/${stackData.id}/cards`,
auth: {
user,
password,
},
body: { title: card.title },
})
}
})
}
})
})
Cypress.Commands.add('getNavigationEntry', (boardTitle) => {
return cy.get('.app-navigation-entry-wrapper[icon=icon-deck]')
.find('ul.app-navigation-entry__children .app-navigation-entry:contains(' + boardTitle + ')')
.find('a.app-navigation-entry-link')
})

20
cypress/support/e2e.js Normal file
View File

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

1
cypress/utils/index.js Normal file
View File

@@ -0,0 +1 @@
export const randHash = () => Math.random().toString(36).replace(/[^a-z]+/g, '').slice(0, 10)

View File

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

4
img/activity-dark.svg Normal file
View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" height="32" width="32" version="1.0" viewbox="0 0 32 32">
<path d="m16 1-10 18h11l-1 12 10-18h-11z"/>
</svg>

After

Width:  |  Height:  |  Size: 205 B

4
img/activity.svg Normal file
View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" height="32" width="32" version="1.0" viewBox="0 0 32 32">
<path d="m16 1-10 18h11l-1 12 10-18h-11z" fill="#FFF"/>
</svg>

After

Width:  |  Height:  |  Size: 217 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><g transform="translate(0 -1036.362)" fill="#fff"><path d="M1.93 1041.296c-.185 0-.336.138-.336.31v9.842c0 .172.15.313.336.313h12.517c.185 0 .333-.14.333-.313v-9.842c0-.172-.148-.31-.333-.31H1.93zm4.124 1.507h4.223c.39 0 .705.314.705.704v.43c0 .39-.315.705-.705.705H6.054a.703.703 0 0 1-.705-.705v-.43c0-.39.314-.704.705-.704z"/><rect width="15.742" height="2.296" x=".136" y="1037.543" ry="0"/></g></svg>

Before

Width:  |  Height:  |  Size: 488 B

1
img/circles-dark.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 58 58" width="512" height="512"><g fill="#000"><path d="M54.319 37.839C54.762 35.918 55 33.96 55 32c0-9.095-4.631-17.377-12.389-22.153a1 1 0 1 0-1.049 1.703C48.724 15.96 53 23.604 53 32c0 1.726-.2 3.451-.573 5.147A6.992 6.992 0 0 0 51 37c-3.86 0-7 3.141-7 7s3.14 7 7 7 7-3.141 7-7a7.006 7.006 0 0 0-3.681-6.161zM38.171 54.182A23.867 23.867 0 0 1 29 56a24.047 24.047 0 0 1-17.017-7.092A6.974 6.974 0 0 0 14 44c0-3.859-3.14-7-7-7s-7 3.141-7 7 3.14 7 7 7a6.952 6.952 0 0 0 3.381-.875C15.26 55.136 21.994 58 29 58c3.435 0 6.778-.663 9.936-1.971.51-.211.753-.796.542-1.307a1.001 1.001 0 0 0-1.307-.54zM4 31.213a1 1 0 0 0 1.068-.927c.712-10.089 7.586-18.52 17.22-21.314C23.142 11.874 25.825 14 29 14c3.86 0 7-3.141 7-7s-3.14-7-7-7c-3.851 0-6.985 3.127-6.999 6.975C11.42 9.922 3.851 19.12 3.073 30.146A.999.999 0 0 0 4 31.213z"/></g></svg>

After

Width:  |  Height:  |  Size: 885 B

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 58 58" width="512" height="512"><g fill="#000"><path d="M54.319 37.839C54.762 35.918 55 33.96 55 32c0-9.095-4.631-17.377-12.389-22.153a1 1 0 1 0-1.049 1.703C48.724 15.96 53 23.604 53 32c0 1.726-.2 3.451-.573 5.147A6.992 6.992 0 0 0 51 37c-3.86 0-7 3.141-7 7s3.14 7 7 7 7-3.141 7-7a7.006 7.006 0 0 0-3.681-6.161zM38.171 54.182A23.867 23.867 0 0 1 29 56a24.047 24.047 0 0 1-17.017-7.092A6.974 6.974 0 0 0 14 44c0-3.859-3.14-7-7-7s-7 3.141-7 7 3.14 7 7 7a6.952 6.952 0 0 0 3.381-.875C15.26 55.136 21.994 58 29 58c3.435 0 6.778-.663 9.936-1.971.51-.211.753-.796.542-1.307a1.001 1.001 0 0 0-1.307-.54zM4 31.213a1 1 0 0 0 1.068-.927c.712-10.089 7.586-18.52 17.22-21.314C23.142 11.874 25.825 14 29 14c3.86 0 7-3.141 7-7s-3.14-7-7-7c-3.851 0-6.985 3.127-6.999 6.975C11.42 9.922 3.851 19.12 3.073 30.146A.999.999 0 0 0 4 31.213z"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 58 58" width="512" height="512"><g fill="#fff"><path d="M54.319 37.839C54.762 35.918 55 33.96 55 32c0-9.095-4.631-17.377-12.389-22.153a1 1 0 1 0-1.049 1.703C48.724 15.96 53 23.604 53 32c0 1.726-.2 3.451-.573 5.147A6.992 6.992 0 0 0 51 37c-3.86 0-7 3.141-7 7s3.14 7 7 7 7-3.141 7-7a7.006 7.006 0 0 0-3.681-6.161zM38.171 54.182A23.867 23.867 0 0 1 29 56a24.047 24.047 0 0 1-17.017-7.092A6.974 6.974 0 0 0 14 44c0-3.859-3.14-7-7-7s-7 3.141-7 7 3.14 7 7 7a6.952 6.952 0 0 0 3.381-.875C15.26 55.136 21.994 58 29 58c3.435 0 6.778-.663 9.936-1.971.51-.211.753-.796.542-1.307a1.001 1.001 0 0 0-1.307-.54zM4 31.213a1 1 0 0 0 1.068-.927c.712-10.089 7.586-18.52 17.22-21.314C23.142 11.874 25.825 14 29 14c3.86 0 7-3.141 7-7s-3.14-7-7-7c-3.851 0-6.985 3.127-6.999 6.975C11.42 9.922 3.851 19.12 3.073 30.146A.999.999 0 0 0 4 31.213z"/></g></svg>

Before

Width:  |  Height:  |  Size: 885 B

After

Width:  |  Height:  |  Size: 885 B

View File

@@ -1 +0,0 @@
<svg width="16" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M11.8 13.8H2.2V4.2h9.6m1.2 0c0-.67-.53-1.2-1.2-1.2H2.2C1.53 3 1 3.53 1 4.2v9.6c0 .67.53 1.2 1.2 1.2h9.6c.67 0 1.2-.53 1.2-1.2"/><path d="m4.2 1c-0.67 0-1.2 0.54-1.2 1.2h10.8v10.8c0.67 0 1.2-0.53 1.2-1.2v-9.6c0-0.67-0.53-1.2-1.2-1.2z"/></svg>

Before

Width:  |  Height:  |  Size: 327 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><path d="M15 15s-.4-7.8-7-10V1L1 8l7 7v-4c5.1 0 7 4 7 4z"/></svg>

Before

Width:  |  Height:  |  Size: 128 B

View File

@@ -1,50 +0,0 @@
OC.L10N.register(
"deck",
{
"Deck" : "Deck",
"Personal" : "Personal",
"%s on %s" : "%s en %s",
"Finished" : "Finó",
"Action needed" : "Precísase aición",
"Later" : "Más sero",
"Done" : "Fecho",
"The file was uploaded" : "Xubióse'l ficheru",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "El ficheru xubíu perpasa la direutiva de xuba upload_max_filesize en php.ini",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "El ficheru xubíu perpasa la direutiva \"MAX_FILE_SIZE\" especificada nel formulariu HTML",
"No file was uploaded" : "Nun se xubieron fichjeros",
"Missing a temporary folder" : "Falta un direutoriu temporal",
"Could not write file to disk" : "Nun pudo escribise nel discu'l ficheru",
"A PHP extension stopped the file upload" : "Una estensión de PHP paró la xuba de ficheros",
"Invalid date, date format must be YYYY-MM-DD" : "Data non válida, el formatu ha ser AAAA-MM-DD",
"Cancel" : "Encaboxar",
"Close" : "Zarrar",
"File already exists" : "Yá esiste'l ficheru",
"Show archived cards" : "Amosar tarxetes archivaes",
"Details" : "Detalles",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetes",
"Undo" : "Desfacer",
"Can edit" : "Can edit",
"Can share" : "Can share",
"Owner" : "Owner",
"Delete" : "Desaniciar",
"Edit" : "Editar",
"Members" : "Miembros",
"Download" : "Baxar",
"Attachments" : "Axuntos",
"Comments" : "Comentarios",
"Modified" : "Modificóse'l",
"Created" : "Creóse",
"Today" : "Güei",
"Tomorrow" : "Mañana",
"Save" : "Guardar",
"Reply" : "Rempuesta",
"Update" : "Anovar",
"Description" : "Descripción",
"(group)" : "(grupu)",
"seconds ago" : "hai segundos",
"Shared with you" : "Shared with you",
"No notifications" : "Ensin avisos",
"Share" : "Share"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -1,48 +0,0 @@
{ "translations": {
"Deck" : "Deck",
"Personal" : "Personal",
"%s on %s" : "%s en %s",
"Finished" : "Finó",
"Action needed" : "Precísase aición",
"Later" : "Más sero",
"Done" : "Fecho",
"The file was uploaded" : "Xubióse'l ficheru",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "El ficheru xubíu perpasa la direutiva de xuba upload_max_filesize en php.ini",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "El ficheru xubíu perpasa la direutiva \"MAX_FILE_SIZE\" especificada nel formulariu HTML",
"No file was uploaded" : "Nun se xubieron fichjeros",
"Missing a temporary folder" : "Falta un direutoriu temporal",
"Could not write file to disk" : "Nun pudo escribise nel discu'l ficheru",
"A PHP extension stopped the file upload" : "Una estensión de PHP paró la xuba de ficheros",
"Invalid date, date format must be YYYY-MM-DD" : "Data non válida, el formatu ha ser AAAA-MM-DD",
"Cancel" : "Encaboxar",
"Close" : "Zarrar",
"File already exists" : "Yá esiste'l ficheru",
"Show archived cards" : "Amosar tarxetes archivaes",
"Details" : "Detalles",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetes",
"Undo" : "Desfacer",
"Can edit" : "Can edit",
"Can share" : "Can share",
"Owner" : "Owner",
"Delete" : "Desaniciar",
"Edit" : "Editar",
"Members" : "Miembros",
"Download" : "Baxar",
"Attachments" : "Axuntos",
"Comments" : "Comentarios",
"Modified" : "Modificóse'l",
"Created" : "Creóse",
"Today" : "Güei",
"Tomorrow" : "Mañana",
"Save" : "Guardar",
"Reply" : "Rempuesta",
"Update" : "Anovar",
"Description" : "Descripción",
"(group)" : "(grupu)",
"seconds ago" : "hai segundos",
"Shared with you" : "Shared with you",
"No notifications" : "Ensin avisos",
"Share" : "Share"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -81,6 +81,7 @@ OC.L10N.register(
"Deck board" : "Доска",
"Owned by %1$s" : "Владелец: %1$s",
"Deck boards, cards and comments" : "Доски, карточки и комментарии",
"From %1$s, in %2$s/%3$s, owned by %4$s" : "Из %1$s, в %2$s/%3$s, принадлежит %4$s",
"Card comments" : "Комментарии карточки",
"%s on %s" : "%s на %s",
"Deck boards and cards" : "Доски и карточки",
@@ -156,6 +157,7 @@ OC.L10N.register(
"Toggle compact mode" : "Выбор компактного или обычного режима просмотра",
"Open details" : "Открыть подробности",
"Details" : "Свойства",
"Currently present people" : "Присутствующие в настоящее время люди",
"Loading board" : "Загрузка доски",
"No lists available" : "Нет ни одного списка",
"Create a new list to add cards to this board" : "Создайте список чтобы добавить карточки на эту доску",
@@ -296,10 +298,12 @@ OC.L10N.register(
"Deck board {name}\n* Last modified on {lastMod}" : "Доска «{name}»\n* Последнее изменение: {lastMod}",
"{stack} in {board}" : "«{stack}» с доски «{board}»",
"Click to expand description" : "Нажмите, чтобы развернуть поле описания",
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* Создано {created}\n* Последнее изменение {lastMod}\n* {nbAttachments} вложений\n* {nbComments} комментариев",
"{nbCards} cards" : "карточек: {nbCards}",
"Click to expand comment" : "Нажмите, чтобы развернуть комментарии",
"No upcoming cards" : "Отсутствуют карточки, ожидающие выполнения",
"upcoming cards" : "карточки, ожидающие выполнения",
"New card" : "Новая карточка",
"Due on {date}" : "Дата исполнения: {date}",
"Link to a board" : "Ссылка на доску",
"Link to a card" : "Ссылка на карточку",

View File

@@ -79,6 +79,7 @@
"Deck board" : "Доска",
"Owned by %1$s" : "Владелец: %1$s",
"Deck boards, cards and comments" : "Доски, карточки и комментарии",
"From %1$s, in %2$s/%3$s, owned by %4$s" : "Из %1$s, в %2$s/%3$s, принадлежит %4$s",
"Card comments" : "Комментарии карточки",
"%s on %s" : "%s на %s",
"Deck boards and cards" : "Доски и карточки",
@@ -154,6 +155,7 @@
"Toggle compact mode" : "Выбор компактного или обычного режима просмотра",
"Open details" : "Открыть подробности",
"Details" : "Свойства",
"Currently present people" : "Присутствующие в настоящее время люди",
"Loading board" : "Загрузка доски",
"No lists available" : "Нет ни одного списка",
"Create a new list to add cards to this board" : "Создайте список чтобы добавить карточки на эту доску",
@@ -294,10 +296,12 @@
"Deck board {name}\n* Last modified on {lastMod}" : "Доска «{name}»\n* Последнее изменение: {lastMod}",
"{stack} in {board}" : "«{stack}» с доски «{board}»",
"Click to expand description" : "Нажмите, чтобы развернуть поле описания",
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* Создано {created}\n* Последнее изменение {lastMod}\n* {nbAttachments} вложений\n* {nbComments} комментариев",
"{nbCards} cards" : "карточек: {nbCards}",
"Click to expand comment" : "Нажмите, чтобы развернуть комментарии",
"No upcoming cards" : "Отсутствуют карточки, ожидающие выполнения",
"upcoming cards" : "карточки, ожидающие выполнения",
"New card" : "Новая карточка",
"Due on {date}" : "Дата исполнения: {date}",
"Link to a board" : "Ссылка на доску",
"Link to a card" : "Ссылка на карточку",

View File

@@ -78,7 +78,7 @@ OC.L10N.register(
"{user} has mentioned you in a comment on {deck-card}." : "{user} har nämnt dig i en kommentar i {deck-card}.",
"The board \"%s\" has been shared with you by %s." : "Tavlan \"%s\" har delats med dig av %s.",
"{user} has shared {deck-board} with you." : "{user} har delat {deck-board} med dig.",
"Deck board" : "Deck-plank",
"Deck board" : "Deck-tavla",
"Owned by %1$s" : "Ägd av %1$s",
"Deck boards, cards and comments" : "Deck tavlor, kort och kommentarer",
"From %1$s, in %2$s/%3$s, owned by %4$s" : "Från %1$s, i %2$s/%3$s, ägd av %4$s",
@@ -92,7 +92,7 @@ OC.L10N.register(
"Later" : "Senare",
"copy" : "kopiera",
"To do" : "Att göra",
"Doing" : "Gör",
"Doing" : "Pågående",
"Done" : "Klart",
"Example Task 3" : "Exempeluppgift 3",
"Example Task 2" : "Exempeluppgift 2",
@@ -249,7 +249,7 @@ OC.L10N.register(
"Write a description …" : "Ange en beskrivning ...",
"Choose attachment" : "Välj bilaga",
"(group)" : " (grupp)",
"Todo items" : "Todo saker",
"Todo items" : "Att göra saker",
"{count} comments, {unread} unread" : "{count} kommentarer, {unread} olästa",
"Edit card title" : "Ändra korttitel",
"Assign to me" : "Tilldela till mig",
@@ -289,7 +289,7 @@ OC.L10N.register(
"Only assigned cards" : "Bara tilldelade kort",
"No reminder" : "Ingen påminnelse",
"An error occurred" : "Ett fel uppstod",
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "Är du säker på att du vill radera brädet {title}? Detta kommer radera all data som tillhör brädet inklusive arkiverade kort.",
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "Är du säker på att du vill radera tavla {title}? Detta kommer radera all data som tillhör tavlan inklusive arkiverade kort.",
"Delete the board?" : "Ta bort tavlan?",
"Loading filtered view" : "Laddar filtrerad vy",
"No due" : "Inget slut",
@@ -316,9 +316,9 @@ OC.L10N.register(
"Share with a Deck card" : "Dela med ett Deck-kort",
"Share {file} with a Deck card" : "Dela {file} med ett Deck-kort",
"Share" : "Dela",
"Are you sure you want to transfer the board {title} for {user}?" : "Är du säker på att du vill överföra brädet {title} för {user}?",
"Transfer the board for {user} successfully" : "Överförde brädet för {user}",
"Failed to transfer the board for {user}" : "Misslyckades med att överföra brädet för {user}",
"Are you sure you want to transfer the board {title} for {user}?" : "Är du säker på att du vill överföra tavla {title} för {user}?",
"Transfer the board for {user} successfully" : "Överförde tavlan för {user}",
"Failed to transfer the board for {user}" : "Misslyckades med att överföra tavlan för {user}",
"Add a new list" : "Lägg till en ny lista",
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Är du säker på att du vill radera tavla {title}? Detta kommer att radera all information från denna tavla."
},

View File

@@ -76,7 +76,7 @@
"{user} has mentioned you in a comment on {deck-card}." : "{user} har nämnt dig i en kommentar i {deck-card}.",
"The board \"%s\" has been shared with you by %s." : "Tavlan \"%s\" har delats med dig av %s.",
"{user} has shared {deck-board} with you." : "{user} har delat {deck-board} med dig.",
"Deck board" : "Deck-plank",
"Deck board" : "Deck-tavla",
"Owned by %1$s" : "Ägd av %1$s",
"Deck boards, cards and comments" : "Deck tavlor, kort och kommentarer",
"From %1$s, in %2$s/%3$s, owned by %4$s" : "Från %1$s, i %2$s/%3$s, ägd av %4$s",
@@ -90,7 +90,7 @@
"Later" : "Senare",
"copy" : "kopiera",
"To do" : "Att göra",
"Doing" : "Gör",
"Doing" : "Pågående",
"Done" : "Klart",
"Example Task 3" : "Exempeluppgift 3",
"Example Task 2" : "Exempeluppgift 2",
@@ -247,7 +247,7 @@
"Write a description …" : "Ange en beskrivning ...",
"Choose attachment" : "Välj bilaga",
"(group)" : " (grupp)",
"Todo items" : "Todo saker",
"Todo items" : "Att göra saker",
"{count} comments, {unread} unread" : "{count} kommentarer, {unread} olästa",
"Edit card title" : "Ändra korttitel",
"Assign to me" : "Tilldela till mig",
@@ -287,7 +287,7 @@
"Only assigned cards" : "Bara tilldelade kort",
"No reminder" : "Ingen påminnelse",
"An error occurred" : "Ett fel uppstod",
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "Är du säker på att du vill radera brädet {title}? Detta kommer radera all data som tillhör brädet inklusive arkiverade kort.",
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "Är du säker på att du vill radera tavla {title}? Detta kommer radera all data som tillhör tavlan inklusive arkiverade kort.",
"Delete the board?" : "Ta bort tavlan?",
"Loading filtered view" : "Laddar filtrerad vy",
"No due" : "Inget slut",
@@ -314,9 +314,9 @@
"Share with a Deck card" : "Dela med ett Deck-kort",
"Share {file} with a Deck card" : "Dela {file} med ett Deck-kort",
"Share" : "Dela",
"Are you sure you want to transfer the board {title} for {user}?" : "Är du säker på att du vill överföra brädet {title} för {user}?",
"Transfer the board for {user} successfully" : "Överförde brädet för {user}",
"Failed to transfer the board for {user}" : "Misslyckades med att överföra brädet för {user}",
"Are you sure you want to transfer the board {title} for {user}?" : "Är du säker på att du vill överföra tavla {title} för {user}?",
"Transfer the board for {user} successfully" : "Överförde tavlan för {user}",
"Failed to transfer the board for {user}" : "Misslyckades med att överföra tavlan för {user}",
"Add a new list" : "Lägg till en ny lista",
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Är du säker på att du vill radera tavla {title}? Detta kommer att radera all information från denna tavla."
},"pluralForm" :"nplurals=2; plural=(n != 1);"

View File

@@ -173,7 +173,7 @@ OC.L10N.register(
"Can manage" : "可以管理",
"Owner" : "所有者",
"Delete" : "删除",
"Failed to create share with {displayName}" : "用 {displayName} 创建分享失败",
"Failed to create share with {displayName}" : "用{displayName}创建分享失败",
"Transfer" : "传输",
"Archive all cards" : "归档所有卡片",
"Delete list" : "删除列表",
@@ -285,7 +285,7 @@ OC.L10N.register(
"Create a card" : "创建一张卡片",
"Message from {author} in {conversationName}" : "{conversationName} 会话中来自 {author} 的消息",
"Something went wrong" : "发生了错误",
"Failed to upload {name}" : "未能上传 {name}",
"Failed to upload {name}" : "未能上传{name}",
"Maximum file size of {size} exceeded" : "文件容量已超过 {size} 的上限",
"Error creating the share" : "创建分享出错",
"Share with a Deck card" : "分享给一张看板卡片",

View File

@@ -171,7 +171,7 @@
"Can manage" : "可以管理",
"Owner" : "所有者",
"Delete" : "删除",
"Failed to create share with {displayName}" : "用 {displayName} 创建分享失败",
"Failed to create share with {displayName}" : "用{displayName}创建分享失败",
"Transfer" : "传输",
"Archive all cards" : "归档所有卡片",
"Delete list" : "删除列表",
@@ -283,7 +283,7 @@
"Create a card" : "创建一张卡片",
"Message from {author} in {conversationName}" : "{conversationName} 会话中来自 {author} 的消息",
"Something went wrong" : "发生了错误",
"Failed to upload {name}" : "未能上传 {name}",
"Failed to upload {name}" : "未能上传{name}",
"Maximum file size of {size} exceeded" : "文件容量已超过 {size} 的上限",
"Error creating the share" : "创建分享出错",
"Share with a Deck card" : "分享给一张看板卡片",

View File

@@ -45,7 +45,9 @@ use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Db\MultipleObjectsReturnedException;
use OCP\Comments\IComment;
use OCP\IUser;
use OCP\Server;
use OCP\L10N\IFactory;
use Psr\Log\LoggerInterface;
class ActivityManager {
public const DECK_NOAUTHOR_COMMENT_SYSTEM_ENFORCED = 'DECK_NOAUTHOR_COMMENT_SYSTEM_ENFORCED';
@@ -53,14 +55,14 @@ class ActivityManager {
public const SUBJECT_PARAMS_MAX_LENGTH = 4000;
public const SHORTENED_DESCRIPTION_MAX_LENGTH = 2000;
private $manager;
private $userId;
private $permissionService;
private $boardMapper;
private $cardMapper;
private $aclMapper;
private $stackMapper;
private $l10nFactory;
private IManager $manager;
private ?string $userId;
private PermissionService $permissionService;
private BoardMapper $boardMapper;
private CardMapper $cardMapper;
private AclMapper $aclMapper;
private StackMapper $stackMapper;
private IFactory $l10nFactory;
public const DECK_OBJECT_BOARD = 'deck_board';
public const DECK_OBJECT_CARD = 'deck_card';
@@ -114,7 +116,7 @@ class ActivityManager {
StackMapper $stackMapper,
AclMapper $aclMapper,
IFactory $l10nFactory,
$userId
?string $userId
) {
$this->manager = $manager;
$this->permissionService = $permissionsService;
@@ -310,10 +312,10 @@ class ActivityManager {
try {
$object = $this->findObjectForEntity($objectType, $entity);
} catch (DoesNotExistException $e) {
\OC::$server->getLogger()->error('Could not create activity entry for ' . $subject . '. Entity not found.', (array)$entity);
Server::get(LoggerInterface::class)->error('Could not create activity entry for ' . $subject . '. Entity not found.', (array)$entity);
return null;
} catch (MultipleObjectsReturnedException $e) {
\OC::$server->getLogger()->error('Could not create activity entry for ' . $subject . '. Entity not found.', (array)$entity);
Server::get(LoggerInterface::class)->error('Could not create activity entry for ' . $subject . '. Entity not found.', (array)$entity);
return null;
}
@@ -365,7 +367,15 @@ class ActivityManager {
case self::SUBJECT_CARD_USER_ASSIGN:
case self::SUBJECT_CARD_USER_UNASSIGN:
$subjectParams = $this->findDetailsForCard($entity->getId(), $subject);
break;
if (isset($additionalParams['after']) && $additionalParams['after'] instanceof \DateTimeInterface) {
$additionalParams['after'] = $additionalParams['after']->format('c');
}
if (isset($additionalParams['before']) && $additionalParams['before'] instanceof \DateTimeInterface) {
$additionalParams['before'] = $additionalParams['before']->format('c');
}
break;
case self::SUBJECT_ATTACHMENT_CREATE:
case self::SUBJECT_ATTACHMENT_UPDATE:
case self::SUBJECT_ATTACHMENT_DELETE:

View File

@@ -312,12 +312,19 @@ class DeckProvider implements IProvider {
$userLanguage = $this->config->getUserValue($event->getAuthor(), 'core', 'lang', $this->l10nFactory->findLanguage());
$userLocale = $this->config->getUserValue($event->getAuthor(), 'core', 'locale', $this->l10nFactory->findLocale());
$l10n = $this->l10nFactory->get('deck', $userLanguage, $userLocale);
$date = new \DateTime($subjectParams['after']);
$date->setTimezone(new \DateTimeZone(\date_default_timezone_get()));
if (is_array($subjectParams['after'])) {
// Unluckily there was a time when we stored jsonSerialized date objects in the database
// Broken in 1.8.0 and fixed again in 1.8.1
$date = new \DateTime($subjectParams['after']['date']);
$date->setTimezone(new \DateTimeZone(\date_default_timezone_get()));
} else {
$date = new \DateTime($subjectParams['after']);
$date->setTimezone(new \DateTimeZone(\date_default_timezone_get()));
}
$params['after'] = [
'type' => 'highlight',
'id' => 'dt:' . $subjectParams['after'],
'name' => $l10n->l('datetime', $date)
'name' => $l10n->l('datetime', $date),
];
}
return $params;

View File

@@ -47,6 +47,7 @@ use OCA\Deck\Listeners\FullTextSearchEventListener;
use OCA\Deck\Middleware\DefaultBoardMiddleware;
use OCA\Deck\Middleware\ExceptionMiddleware;
use OCA\Deck\Notification\Notifier;
use OCA\Deck\Reference\CardReferenceProvider;
use OCA\Deck\Search\CardCommentProvider;
use OCA\Deck\Search\DeckProvider;
use OCA\Deck\Service\PermissionService;
@@ -57,20 +58,22 @@ use OCP\AppFramework\Bootstrap\IBootContext;
use OCP\AppFramework\Bootstrap\IBootstrap;
use OCP\AppFramework\Bootstrap\IRegistrationContext;
use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent;
use OCP\Collaboration\Reference\RenderReferenceEvent;
use OCP\Collaboration\Resources\IProviderManager;
use OCP\Comments\CommentsEntityEvent;
use OCP\Comments\ICommentsManager;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Group\Events\GroupDeletedEvent;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\IGroup;
use OCP\IGroupManager;
use OCP\IServerContainer;
use OCP\IUser;
use OCP\IRequest;
use OCP\Server;
use OCP\IUserManager;
use OCP\Notification\IManager as NotificationManager;
use OCP\Share\IManager;
use OCP\User\Events\UserDeletedEvent;
use OCP\Util;
use Psr\Container\ContainerInterface;
@@ -79,13 +82,16 @@ class Application extends App implements IBootstrap {
public const COMMENT_ENTITY_TYPE = 'deckCard';
/** @var IServerContainer */
private $server;
public function __construct(array $urlParams = []) {
parent::__construct(self::APP_ID, $urlParams);
$this->server = \OC::$server;
// TODO move this back to ::register after fixing the autoload issue
// (and use a listener class)
$container = $this->getContainer();
$eventDispatcher = $container->get(IEventDispatcher::class);
$eventDispatcher->addListener(RenderReferenceEvent::class, function () {
Util::addScript(self::APP_ID, self::APP_ID . '-card-reference');
});
}
public function boot(IBootContext $context): void {
@@ -124,8 +130,12 @@ class Application extends App implements IBootstrap {
$context->registerSearchProvider(CardCommentProvider::class);
$context->registerDashboardWidget(DeckWidget::class);
// reference widget
$context->registerReferenceProvider(CardReferenceProvider::class);
// $context->registerEventListener(RenderReferenceEvent::class, CardReferenceListener::class);
$context->registerEventListener(BeforeTemplateRenderedEvent::class, BeforeTemplateRenderedListener::class);
// Event listening for full text search indexing
$context->registerEventListener(CardCreatedEvent::class, FullTextSearchEventListener::class);
$context->registerEventListener(CardUpdatedEvent::class, FullTextSearchEventListener::class);
@@ -141,33 +151,43 @@ class Application extends App implements IBootstrap {
private function registerUserGroupHooks(IUserManager $userManager, IGroupManager $groupManager): void {
$container = $this->getContainer();
/** @var IEventDispatcher $eventDispatcher */
$eventDispatcher = $container->get(IEventDispatcher::class);
// Delete user/group acl entries when they get deleted
$userManager->listen('\OC\User', 'postDelete', static function (IUser $user) use ($container) {
$eventDispatcher->addListener(UserDeletedEvent::class, static function (Event $event) use ($container): void {
if (!($event instanceof UserDeletedEvent)) {
return;
}
$user = $event->getUser();
// delete existing acl entries for deleted user
/** @var AclMapper $aclMapper */
$aclMapper = $container->query(AclMapper::class);
$aclMapper = $container->get(AclMapper::class);
$acls = $aclMapper->findByParticipant(Acl::PERMISSION_TYPE_USER, $user->getUID());
foreach ($acls as $acl) {
$aclMapper->delete($acl);
}
// delete existing user assignments
$assignmentMapper = $container->query(AssignmentMapper::class);
$assignmentMapper = $container->get(AssignmentMapper::class);
$assignments = $assignmentMapper->findByParticipant($user->getUID());
foreach ($assignments as $assignment) {
$assignmentMapper->delete($assignment);
}
/** @var BoardMapper $boardMapper */
$boardMapper = $container->query(BoardMapper::class);
$boardMapper = $container->get(BoardMapper::class);
$boards = $boardMapper->findAllByOwner($user->getUID());
foreach ($boards as $board) {
$boardMapper->delete($board);
}
});
$groupManager->listen('\OC\Group', 'postDelete', static function (IGroup $group) use ($container) {
$eventDispatcher->addListener(GroupDeletedEvent::class, static function (Event $event) use ($container): void {
if (!($event instanceof GroupDeletedEvent)) {
return;
}
$group = $event->getGroup();
/** @var AclMapper $aclMapper */
$aclMapper = $container->query(AclMapper::class);
$aclMapper = $container->get(AclMapper::class);
$aclMapper->findByParticipant(Acl::PERMISSION_TYPE_GROUP, $group->getGID());
$acls = $aclMapper->findByParticipant(Acl::PERMISSION_TYPE_GROUP, $group->getGID());
foreach ($acls as $acl) {
@@ -181,6 +201,7 @@ class Application extends App implements IBootstrap {
$event->addEntityCollection(self::COMMENT_ENTITY_TYPE, function ($name) {
/** @var CardMapper */
$cardMapper = $this->getContainer()->get(CardMapper::class);
/** @var PermissionService $permissionService */
$permissionService = $this->getContainer()->get(PermissionService::class);
try {
@@ -203,7 +224,7 @@ class Application extends App implements IBootstrap {
$resourceManager->registerResourceProvider(ResourceProviderCard::class);
$symfonyAdapter->addListener('\OCP\Collaboration\Resources::loadAdditionalScripts', static function () {
if (strpos(\OC::$server->getRequest()->getPathInfo(), '/call/') === 0) {
if (strpos(Server::get(IRequest::class)->getPathInfo(), '/call/') === 0) {
// Talk integration has its own entrypoint which already includes collections handling
return;
}

View File

@@ -32,20 +32,23 @@ use OCP\AppFramework\QueryException;
use OCP\Collaboration\Resources\IManager;
use OCP\Collaboration\Resources\IProvider;
use OCP\Collaboration\Resources\IResource;
use OCP\IURLGenerator;
use OCP\IUser;
use OCP\Server;
class ResourceProvider implements IProvider {
public const RESOURCE_TYPE = 'deck';
private $boardMapper;
private $permissionService;
private BoardMapper $boardMapper;
private PermissionService $permissionService;
private IURLGenerator $urlGenerator;
/** @var array */
protected $nodes = [];
protected array $nodes = [];
public function __construct(BoardMapper $boardMapper, PermissionService $permissionService) {
public function __construct(BoardMapper $boardMapper, PermissionService $permissionService, IURLGenerator $urlGenerator) {
$this->boardMapper = $boardMapper;
$this->permissionService = $permissionService;
$this->urlGenerator = $urlGenerator;
}
/**
@@ -70,14 +73,14 @@ class ResourceProvider implements IProvider {
*/
public function getResourceRichObject(IResource $resource): array {
$board = $this->getBoard($resource);
$link = \OC::$server->getURLGenerator()->linkToRoute('deck.page.index') . '#/board/' . $resource->getId();
$link = $this->urlGenerator->linkToRoute('deck.page.index') . '#/board/' . $resource->getId();
return [
'type' => self::RESOURCE_TYPE,
'id' => $resource->getId(),
'name' => $board->getTitle(),
'link' => $link,
'iconUrl' => \OC::$server->getURLGenerator()->imagePath('deck', 'deck-dark.svg')
'iconUrl' => $this->urlGenerator->imagePath('deck', 'deck-dark.svg')
];
}
@@ -118,7 +121,7 @@ class ResourceProvider implements IProvider {
public function invalidateAccessCache($boardId = null) {
try {
/** @var IManager $resourceManager */
$resourceManager = \OC::$server->query(IManager::class);
$resourceManager = Server::get(IManager::class);
} catch (QueryException $e) {
}
if ($boardId !== null) {

View File

@@ -37,24 +37,16 @@ use OCP\Collaboration\Resources\IResource;
use OCP\Collaboration\Resources\ResourceException;
use OCP\IURLGenerator;
use OCP\IUser;
use OCP\Server;
class ResourceProviderCard implements IProvider {
public const RESOURCE_TYPE = 'deck-card';
/** @var CardMapper */
private $cardMapper;
/** @var BoardMapper */
private $boardMapper;
/** @var PermissionService */
private $permissionService;
/** @var IURLGenerator */
private $urlGenerator;
/** @var array */
protected $nodes = [];
private CardMapper $cardMapper;
private BoardMapper $boardMapper;
private PermissionService $permissionService;
private IURLGenerator $urlGenerator;
protected array $nodes = [];
public function __construct(CardMapper $cardMapper, BoardMapper $boardMapper, PermissionService $permissionService, IURLGenerator $urlGenerator) {
$this->cardMapper = $cardMapper;
@@ -147,7 +139,7 @@ class ResourceProviderCard implements IProvider {
public function invalidateAccessCache($cardId = null) {
try {
/** @var IManager $resourceManager */
$resourceManager = \OC::$server->query(IManager::class);
$resourceManager = Server::get(IManager::class);
} catch (QueryException $e) {
}
if ($cardId !== null) {

View File

@@ -30,8 +30,7 @@ use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
class BoardImport extends Command {
/** @var BoardImportCommandService */
private $boardImportCommandService;
private BoardImportCommandService $boardImportCommandService;
public function __construct(
BoardImportCommandService $boardImportCommandService

View File

@@ -27,6 +27,7 @@ use OCA\Deck\Db\AssignmentMapper;
use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\CardMapper;
use OCA\Deck\Db\StackMapper;
use OCA\Deck\Model\CardDetails;
use OCA\Deck\Service\BoardService;
use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Db\MultipleObjectsReturnedException;
@@ -101,7 +102,9 @@ class UserExport extends Command {
$fullCard = $this->cardMapper->find($card->getId());
$assignedUsers = $this->assignedUsersMapper->findAll($card->getId());
$fullCard->setAssignedUsers($assignedUsers);
$data[$board->getId()]['stacks'][$stack->getId()]['cards'][] = (array)$fullCard->jsonSerialize();
$cardDetails = new CardDetails($fullCard, $fullBoard);
$data[$board->getId()]['stacks'][$stack->getId()]['cards'][] = $cardDetails->jsonSerialize();
}
}
}

View File

@@ -29,7 +29,9 @@ use OCA\Deck\Service\PermissionService;
use OCA\Files\Event\LoadSidebar;
use OCA\Viewer\Event\LoadViewer;
use OCP\AppFramework\Http\ContentSecurityPolicy;
use OCP\Collaboration\Resources\LoadAdditionalScriptsEvent as CollaborationResourcesEvent;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IConfig;
use OCP\IInitialStateService;
use OCP\IRequest;
use OCP\AppFramework\Http\TemplateResponse;
@@ -41,16 +43,17 @@ use OCA\Deck\Db\Acl;
use OCA\Deck\Service\CardService;
class PageController extends Controller {
private $permissionService;
private $initialState;
private $configService;
private $eventDispatcher;
private $cardMapper;
private $urlGenerator;
private $cardService;
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(
$AppName,
string $AppName,
IRequest $request,
PermissionService $permissionService,
IInitialStateService $initialStateService,
@@ -58,7 +61,8 @@ class PageController extends Controller {
IEventDispatcher $eventDispatcher,
CardMapper $cardMapper,
IURLGenerator $urlGenerator,
CardService $cardService
CardService $cardService,
IConfig $config
) {
parent::__construct($AppName, $request);
@@ -69,6 +73,7 @@ class PageController extends Controller {
$this->cardMapper = $cardMapper;
$this->urlGenerator = $urlGenerator;
$this->cardService = $cardService;
$this->config = $config;
}
/**
@@ -84,13 +89,17 @@ class PageController extends Controller {
$this->initialState->provideInitialState(Application::APP_ID, 'config', $this->configService->getAll());
$this->eventDispatcher->dispatchTyped(new LoadSidebar());
$this->eventDispatcher->dispatchTyped(new CollaborationResourcesEvent());
if (class_exists(LoadViewer::class)) {
$this->eventDispatcher->dispatchTyped(new LoadViewer());
}
$response = new TemplateResponse('deck', 'main');
$response = new TemplateResponse('deck', 'main', [
'id-app-content' => '#app-content-vue',
'id-app-navigation' => '#app-navigation-vue',
]);
if (\OC::$server->getConfig()->getSystemValueBool('debug', false)) {
if ($this->config->getSystemValueBool('debug', false)) {
$csp = new ContentSecurityPolicy();
$csp->addAllowedConnectDomain('*');
$csp->addAllowedScriptDomain('*');

View File

@@ -27,6 +27,7 @@ declare(strict_types=1);
namespace OCA\Deck\Controller;
use OCA\Deck\Db\Card;
use OCA\Deck\Model\CardDetails;
use OCA\Deck\Service\SearchService;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\OCSController;
@@ -50,9 +51,12 @@ class SearchController extends OCSController {
public function search(string $term, ?int $limit = null, ?int $cursor = null): DataResponse {
$cards = $this->searchService->searchCards($term, $limit, $cursor);
return new DataResponse(array_map(function (Card $card) {
$json = $card->jsonSerialize();
$board = $card->getRelatedBoard();
$json = (new CardDetails($card, $board))->jsonSerialize();
$json['relatedBoard'] = $board;
$json['relatedStack'] = $card->getRelatedStack();
$json['relatedBoard'] = $card->getRelatedBoard();
return $json;
}, $cards));
}

View File

@@ -59,20 +59,21 @@ class Calendar extends ExternalCalendar {
}
public function getACL() {
// the calendar should always have the read and the write-properties permissions
// write-properties is needed to allow the user to toggle the visibility of shared deck calendars
$acl = [
[
'privilege' => '{DAV:}read',
'principal' => $this->getOwner(),
'protected' => true,
]
];
if ($this->backend->checkBoardPermission($this->board->getId(), Acl::PERMISSION_MANAGE)) {
$acl[] = [
],
[
'privilege' => '{DAV:}write-properties',
'principal' => $this->getOwner(),
'protected' => true,
];
}
]
];
return $acl;
}
@@ -187,12 +188,18 @@ class Calendar extends ExternalCalendar {
foreach ($properties as $key => $value) {
switch ($key) {
case '{DAV:}displayname':
if (!$this->backend->checkBoardPermission($this->board->getId(), Acl::PERMISSION_MANAGE)) {
throw new Forbidden('no permission to change the displayname');
}
if (mb_strpos($value, 'Deck: ') === 0) {
$value = mb_substr($value, strlen('Deck: '));
}
$this->board->setTitle($value);
break;
case '{http://apple.com/ns/ical/}calendar-color':
if (!$this->backend->checkBoardPermission($this->board->getId(), Acl::PERMISSION_MANAGE)) {
throw new Forbidden('no permission to change the calendar color');
}
$color = substr($value, 1, 6);
if (!preg_match('/[a-f0-9]{6}/i', $color)) {
throw new InvalidDataException('No valid color provided');

View File

@@ -26,18 +26,34 @@ declare(strict_types=1);
namespace OCA\Deck\Dashboard;
use OCP\Dashboard\IWidget;
use DateTime;
use OCA\Deck\AppInfo\Application;
use OCA\Deck\Db\Label;
use OCA\Deck\Service\OverviewService;
use OCP\Dashboard\IAPIWidget;
use OCP\Dashboard\IButtonWidget;
use OCP\Dashboard\IIconWidget;
use OCP\Dashboard\Model\WidgetButton;
use OCP\Dashboard\Model\WidgetItem;
use OCP\IDateTimeFormatter;
use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\Util;
class DeckWidget implements IWidget {
class DeckWidget implements IAPIWidget, IButtonWidget, IIconWidget {
private IL10N $l10n;
private OverviewService $dashboardService;
private IURLGenerator $urlGenerator;
private IDateTimeFormatter $dateTimeFormatter;
/**
* @var IL10N
*/
private $l10n;
public function __construct(IL10N $l10n) {
public function __construct(IL10N $l10n,
OverviewService $dashboardService,
IDateTimeFormatter $dateTimeFormatter,
IURLGenerator $urlGenerator) {
$this->l10n = $l10n;
$this->dashboardService = $dashboardService;
$this->urlGenerator = $urlGenerator;
$this->dateTimeFormatter = $dateTimeFormatter;
}
/**
@@ -68,17 +84,88 @@ class DeckWidget implements IWidget {
return 'icon-deck';
}
/**
* @inheritDoc
*/
public function getIconUrl(): string {
return $this->urlGenerator->getAbsoluteURL(
$this->urlGenerator->imagePath(Application::APP_ID, 'deck-dark.svg')
);
}
/**
* @inheritDoc
*/
public function getUrl(): ?string {
return null;
return $this->urlGenerator->getAbsoluteURL(
$this->urlGenerator->linkToRoute(Application::APP_ID . '.page.index')
);
}
/**
* @inheritDoc
*/
public function load(): void {
\OCP\Util::addScript('deck', 'deck-dashboard');
Util::addScript('deck', 'deck-dashboard');
}
/**
* @inheritDoc
*/
public function getItems(string $userId, ?string $since = null, int $limit = 7): array {
$upcomingCards = $this->dashboardService->findUpcomingCards($userId);
$nowTimestamp = (new Datetime())->getTimestamp();
$sinceTimestamp = $since !== null ? (new Datetime($since))->getTimestamp() : null;
$upcomingCards = array_filter($upcomingCards, static function (array $card) use ($nowTimestamp, $sinceTimestamp) {
if ($card['duedate']) {
$ts = (new Datetime($card['duedate']))->getTimestamp();
return $ts > $nowTimestamp && ($sinceTimestamp === null || $ts > $sinceTimestamp);
}
return false;
});
usort($upcomingCards, static function ($a, $b) {
$a = new Datetime($a['duedate']);
$ta = $a->getTimestamp();
$b = new Datetime($b['duedate']);
$tb = $b->getTimestamp();
return ($ta > $tb) ? 1 : -1;
});
$upcomingCards = array_slice($upcomingCards, 0, $limit);
$urlGenerator = $this->urlGenerator;
$dateTimeFormatter = $this->dateTimeFormatter;
return array_map(static function (array $card) use ($urlGenerator, $dateTimeFormatter) {
$formattedDueDate = $dateTimeFormatter->formatDateTime(new DateTime($card['duedate']));
return new WidgetItem(
$card['title'] . ' (' . $formattedDueDate . ')',
implode(
', ',
array_map(static function (Label $label) {
return $label->jsonSerialize()['title'];
}, $card['labels'])
),
$urlGenerator->getAbsoluteURL(
$urlGenerator->linkToRoute(Application::APP_ID . '.page.redirectToCard', ['cardId' => $card['id']])
),
$urlGenerator->getAbsoluteURL(
$urlGenerator->imagePath(Application::APP_ID, 'deck-dark.svg')
),
$card['duedate']
);
}, $upcomingCards);
}
/**
* @inheritDoc
*/
public function getWidgetButtons(string $userId): array {
return [
new WidgetButton(
WidgetButton::TYPE_MORE,
$this->urlGenerator->getAbsoluteURL(
$this->urlGenerator->linkToRoute(Application::APP_ID . '.page.index')
),
$this->l10n->t('Load more')
),
];
}
}

View File

@@ -33,18 +33,46 @@ class AclMapper extends DeckMapper implements IPermissionMapper {
parent::__construct($db, 'deck_board_acl', Acl::class);
}
/**
* @param numeric $boardId
* @param int|null $limit
* @param int|null $offset
* @return Acl[]
* @throws \OCP\DB\Exception
*/
public function findAll($boardId, $limit = null, $offset = null) {
$sql = 'SELECT id, board_id, type, participant, permission_edit, permission_share, permission_manage FROM `*PREFIX*deck_board_acl` WHERE `board_id` = ? ';
return $this->findEntities($sql, [$boardId], $limit, $offset);
$qb = $this->db->getQueryBuilder();
$qb->select('id', 'board_id', 'type', 'participant', 'permission_edit', 'permission_share', 'permission_manage')
->from('deck_board_acl')
->where($qb->expr()->eq('board_id', $qb->createNamedParameter($boardId, IQueryBuilder::PARAM_INT)))
->setMaxResults($limit)
->setFirstResult($offset);
return $this->findEntities($qb);
}
public function isOwner($userId, $aclId): bool {
$sql = 'SELECT owner FROM `*PREFIX*deck_boards` WHERE `id` IN (SELECT board_id FROM `*PREFIX*deck_board_acl` WHERE id = ?)';
$stmt = $this->execute($sql, [$aclId]);
$row = $stmt->fetch();
return ($row['owner'] === $userId);
/**
* @param numeric $userId
* @param numeric $id
* @return bool
* @throws \OCP\DB\Exception
*/
public function isOwner($userId, $id): bool {
$aclId = $id;
$qb = $this->db->getQueryBuilder();
$qb->select('acl.id')
->from($this->getTableName(), 'acl')
->innerJoin('acl', 'deck_boards', 'b', 'acl.board_id = b.id')
->where($qb->expr()->eq('owner', $qb->createNamedParameter($userId, IQueryBuilder::PARAM_STR)))
->andWhere($qb->expr()->eq('acl.id', $qb->createNamedParameter($aclId, IQueryBuilder::PARAM_INT)));
return count($qb->executeQuery()->fetchAll()) > 0;
}
/**
* @param numeric $id
* @return int|null
*/
public function findBoardId($id): ?int {
try {
$entity = $this->find($id);
@@ -54,9 +82,21 @@ class AclMapper extends DeckMapper implements IPermissionMapper {
return null;
}
/**
* @param int $type
* @param string $participant
* @return Acl[]
* @throws \OCP\DB\Exception
*/
public function findByParticipant($type, $participant): array {
$sql = 'SELECT * from *PREFIX*deck_board_acl WHERE type = ? AND participant = ?';
return $this->findEntities($sql, [$type, $participant]);
$qb = $this->db->getQueryBuilder();
$qb->select('*')
->from($this->getTableName())
->where($qb->expr()->eq('type', $qb->createNamedParameter($type, IQueryBuilder::PARAM_INT)))
->andWhere($qb->expr()->eq('participant', $qb->createNamedParameter($participant, IQueryBuilder::PARAM_STR)));
return $this->findEntities($qb);
}
/**

View File

@@ -55,9 +55,6 @@ class AssignmentMapper extends QBMapper implements IPermissionMapper {
$this->circleService = $circleService;
}
/**
* @return Assignment[]
*/
public function findAll(int $cardId): array {
$qb = $this->db->getQueryBuilder();
$qb->select('*')
@@ -80,8 +77,8 @@ class AssignmentMapper extends QBMapper implements IPermissionMapper {
}
public function isOwner($userId, $cardId): bool {
return $this->cardMapper->isOwner($userId, $cardId);
public function isOwner($userId, $id): bool {
return $this->cardMapper->isOwner($userId, $id);
}
public function findBoardId($id): ?int {

View File

@@ -30,7 +30,6 @@ use OCP\AppFramework\Db\MultipleObjectsReturnedException;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
use OCP\IUserManager;
use PDO;
class AttachmentMapper extends DeckMapper implements IPermissionMapper {
private $cardMapper;
@@ -52,70 +51,53 @@ class AttachmentMapper extends DeckMapper implements IPermissionMapper {
}
/**
* @param $id
* @return Entity|Attachment
* @throws \OCP\AppFramework\Db\DoesNotExistException
* @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException
* @param int $id
* @return Attachment
* @throws DoesNotExistException
* @throws MultipleObjectsReturnedException
* @throws \OCP\DB\Exception
*/
public function find($id) {
$qb = $this->db->getQueryBuilder();
$qb->select('*')
->from('deck_attachment')
->from($this->getTableName())
->where($qb->expr()->eq('id', $qb->createNamedParameter($id, IQueryBuilder::PARAM_INT)));
$cursor = $qb->execute();
$row = $cursor->fetch(PDO::FETCH_ASSOC);
if ($row === false) {
$cursor->closeCursor();
throw new DoesNotExistException('Did expect one result but found none when executing query: ' . $qb->getSQL());
}
$row2 = $cursor->fetch();
$cursor->closeCursor();
if ($row2 !== false) {
throw new MultipleObjectsReturnedException('Did not expect more than one result when executing query: ' . $qb->getSQL());
}
return $this->mapRowToEntity($row);
}
public function findByData($cardId, $data) {
$qb = $this->db->getQueryBuilder();
$qb->select('*')
->from('deck_attachment')
->where($qb->expr()->eq('card_id', $qb->createNamedParameter($cardId, IQueryBuilder::PARAM_INT)))
->andWhere($qb->expr()->eq('data', $qb->createNamedParameter($data, IQueryBuilder::PARAM_STR)));
$cursor = $qb->execute();
$row = $cursor->fetch(PDO::FETCH_ASSOC);
if ($row === false) {
$cursor->closeCursor();
throw new DoesNotExistException('Did expect one result but found none when executing query: ' . $qb->getSQL());
}
$cursor->closeCursor();
return $this->mapRowToEntity($row);
return $this->findEntity($qb);
}
/**
* @param int $cardId
* @param string $data
* @return Attachment
* @throws DoesNotExistException
* @throws MultipleObjectsReturnedException
* @throws \OCP\DB\Exception
*/
public function findByData($cardId, $data) {
$qb = $this->db->getQueryBuilder();
$qb->select('*')
->from($this->getTableName())
->where($qb->expr()->eq('card_id', $qb->createNamedParameter($cardId, IQueryBuilder::PARAM_INT)))
->andWhere($qb->expr()->eq('data', $qb->createNamedParameter($data, IQueryBuilder::PARAM_STR)));
return $this->findEntity($qb);
}
/**
* Find all attachments for a card
*
* @param $cardId
* @return array
* @return Entity[]
* @throws \OCP\DB\Exception
*/
public function findAll($cardId) {
$qb = $this->db->getQueryBuilder();
$qb->select('*')
->from('deck_attachment')
->from($this->getTableName())
->where($qb->expr()->eq('card_id', $qb->createNamedParameter($cardId, IQueryBuilder::PARAM_INT)))
->andWhere($qb->expr()->eq('deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT)));
$entities = [];
$cursor = $qb->execute();
while ($row = $cursor->fetch()) {
$entities[] = $this->mapRowToEntity($row);
}
$cursor->closeCursor();
return $entities;
return $this->findEntities($qb);
}
/**
@@ -128,7 +110,7 @@ class AttachmentMapper extends DeckMapper implements IPermissionMapper {
$timeLimit = time() - (60 * 5);
$qb = $this->db->getQueryBuilder();
$qb->select('*')
->from('deck_attachment')
->from($this->getTableName())
->where($qb->expr()->gt('deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT)));
if ($withOffset) {
$qb
@@ -139,13 +121,7 @@ class AttachmentMapper extends DeckMapper implements IPermissionMapper {
->andWhere($qb->expr()->eq('card_id', $qb->createNamedParameter($cardId, IQueryBuilder::PARAM_INT)));
}
$entities = [];
$cursor = $qb->execute();
while ($row = $cursor->fetch()) {
$entities[] = $this->mapRowToEntity($row);
}
$cursor->closeCursor();
return $entities;
return $this->findEntities($qb);
}

View File

@@ -23,6 +23,14 @@
namespace OCA\Deck\Db;
/**
* @method int getId()
* @method string getTitle()
* @method int getShared()
* @method bool getArchived()
* @method int getDeletedAt()
* @method int getLastModified()
*/
class Board extends RelationalEntity {
protected $title;
protected $owner;

View File

@@ -42,9 +42,9 @@ class BoardMapper extends QBMapper implements IPermissionMapper {
private $circlesService;
private $logger;
/** @var CappedMemoryCache */
/** @var CappedMemoryCache<Board[]> */
private $userBoardCache;
/** @var CappedMemoryCache */
/** @var CappedMemoryCache<Board> */
private $boardCache;
public function __construct(
@@ -107,6 +107,47 @@ class BoardMapper extends QBMapper implements IPermissionMapper {
return $this->boardCache[$id];
}
public function findBoardIds(string $userId): array {
$qb = $this->db->getQueryBuilder();
$qb->selectDistinct('b.id')
->from($this->getTableName(), 'b')
->leftJoin('b', 'deck_board_acl', 'acl', $qb->expr()->eq('b.id', 'acl.board_id'));
// Owned by the user
$qb->where($qb->expr()->andX(
$qb->expr()->eq('owner', $qb->createNamedParameter($userId, IQueryBuilder::PARAM_STR)),
));
// Shared to the user
$qb->orWhere($qb->expr()->andX(
$qb->expr()->eq('acl.participant', $qb->createNamedParameter($userId, IQueryBuilder::PARAM_STR)),
$qb->expr()->eq('acl.type', $qb->createNamedParameter(Acl::PERMISSION_TYPE_USER, IQueryBuilder::PARAM_INT)),
));
// Shared to user groups of the user
$groupIds = $this->groupManager->getUserGroupIds($this->userManager->get($userId));
if (count($groupIds) !== 0) {
$qb->orWhere($qb->expr()->andX(
$qb->expr()->in('acl.participant', $qb->createNamedParameter($groupIds, IQueryBuilder::PARAM_STR_ARRAY)),
$qb->expr()->eq('acl.type', $qb->createNamedParameter(Acl::PERMISSION_TYPE_GROUP, IQueryBuilder::PARAM_INT)),
));
}
// Shared to circles of the user
$circles = $this->circlesService->getUserCircles($userId);
if (count($circles) !== 0) {
$qb->orWhere($qb->expr()->andX(
$qb->expr()->in('acl.participant', $qb->createNamedParameter($circles, IQueryBuilder::PARAM_STR_ARRAY)),
$qb->expr()->eq('acl.type', $qb->createNamedParameter(Acl::PERMISSION_TYPE_CIRCLE, IQueryBuilder::PARAM_INT)),
));
}
$result = $qb->executeQuery();
return array_map(function (string $id) {
return (int)$id;
}, $result->fetchAll(\PDO::FETCH_COLUMN));
}
public function findAllForUser(string $userId, ?int $since = null, bool $includeArchived = true, ?int $before = null,
?string $term = null): array {
$useCache = ($since === -1 && $includeArchived === true && $before === null && $term === null);
@@ -131,14 +172,9 @@ class BoardMapper extends QBMapper implements IPermissionMapper {
/**
* Find all boards for a given user
*
* @param $userId
* @param null $limit
* @param null $offset
* @return array
*/
public function findAllByUser(string $userId, ?int $limit = null, ?int $offset = null, ?int $since = null,
bool $includeArchived = true, ?int $before = null, ?string $term = null) {
bool $includeArchived = true, ?int $before = null, ?string $term = null): array {
// FIXME this used to be a UNION to get boards owned by $userId and the user shares in one single query
// Is it possible with the query builder?
$qb = $this->db->getQueryBuilder();
@@ -247,15 +283,9 @@ class BoardMapper extends QBMapper implements IPermissionMapper {
/**
* Find all boards for a given user
*
* @param $userId
* @param $groups
* @param null $limit
* @param null $offset
* @return array
*/
public function findAllByGroups(string $userId, array $groups, ?int $limit = null, ?int $offset = null, ?int $since = null,
bool $includeArchived = true, ?int $before = null, ?string $term = null) {
bool $includeArchived = true, ?int $before = null, ?string $term = null): array {
if (count($groups) <= 0) {
return [];
}
@@ -414,8 +444,8 @@ class BoardMapper extends QBMapper implements IPermissionMapper {
return parent::delete($entity);
}
public function isOwner($userId, $boardId): bool {
$board = $this->find($boardId);
public function isOwner($userId, $id): bool {
$board = $this->find($id);
return ($board->getOwner() === $userId);
}

View File

@@ -27,6 +27,44 @@ use DateTime;
use DateTimeZone;
use Sabre\VObject\Component\VCalendar;
/**
* @method string getTitle()
* @method string getDescription()
* @method string getDescriptionPrev()
* @method int getStackId()
* @method int getOrder()
* @method int getLastModified()
* @method int getCreatedAt()
* @method bool getArchived()
* @method bool getNotified()
*
* @method void setLabels(Label[] $labels)
* @method null|Label[] getLabels()
*
* @method void setAssignedUsers(Assignment[] $users)
* @method null|User[] getAssignedUsers()
*
* @method void setAttachments(Attachment[] $attachments)
* @method null|Attachment[] getAttachments()
*
* @method void setAttachmentCount(int $count)
* @method null|int getAttachmentCount()
*
* @method void setCommentsUnread(int $count)
* @method null|int getCommentsUnread()
*
* @method void setCommentsCount(int $count)
* @method null|int getCommentsCount()
*
* @method void setOwner(string $user)
* @method null|string getOwner()
*
* @method void setRelatedStack(Stack $stack)
* @method null|Stack getRelatedStack()
*
* @method void setRelatedBoard(Board $board)
* @method null|Board getRelatedBoard()
*/
class Card extends RelationalEntity {
public const TITLE_MAX_LENGTH = 255;
@@ -70,6 +108,7 @@ class Card extends RelationalEntity {
$this->addType('archived', 'boolean');
$this->addType('notified', 'boolean');
$this->addType('deletedAt', 'integer');
$this->addType('duedate', 'datetime');
$this->addRelation('labels');
$this->addRelation('assignedUsers');
$this->addRelation('attachments');
@@ -87,50 +126,6 @@ class Card extends RelationalEntity {
$this->databaseType = $type;
}
public function getDuedate($isoFormat = false) {
if ($this->duedate === null) {
return null;
}
$dt = new DateTime($this->duedate);
if (!$isoFormat && $this->databaseType === 'mysql') {
return $dt->format('Y-m-d H:i:s');
}
return $dt->format('c');
}
public function jsonSerialize(): array {
$json = parent::jsonSerialize();
$json['overdue'] = self::DUEDATE_FUTURE;
$due = $this->duedate ? strtotime($this->duedate) : false;
if ($due !== false) {
$today = new DateTime();
$today->setTime(0, 0);
$match_date = new DateTime($this->duedate);
$match_date->setTime(0, 0);
$diff = $today->diff($match_date);
$diffDays = (integer) $diff->format('%R%a'); // Extract days count in interval
if ($diffDays === 1) {
$json['overdue'] = self::DUEDATE_NEXT;
}
if ($diffDays === 0) {
$json['overdue'] = self::DUEDATE_NOW;
}
if ($diffDays < 0) {
$json['overdue'] = self::DUEDATE_OVERDUE;
}
}
$json['duedate'] = $this->getDuedate(true);
unset($json['notified']);
unset($json['descriptionPrev']);
unset($json['relatedStack']);
unset($json['relatedBoard']);
return $json;
}
public function getCalendarObject(): VCalendar {
$calendar = new VCalendar();
$event = $calendar->createComponent('VTODO');
@@ -139,7 +134,7 @@ class Card extends RelationalEntity {
$creationDate = new DateTime();
$creationDate->setTimestamp($this->createdAt);
$event->DTSTAMP = $creationDate;
$event->DUE = new DateTime($this->getDuedate(true), new DateTimeZone('UTC'));
$event->DUE = new DateTime($this->getDuedate()->format('c'), new DateTimeZone('UTC'));
}
$event->add('RELATED-TO', 'deck-stack-' . $this->getStackId());

View File

@@ -238,6 +238,21 @@ class CardMapper extends QBMapper implements IPermissionMapper {
return $this->findEntities($qb);
}
public function findAllByBoardId(int $boardId, ?int $limit = null, ?int $offset = null): array {
$qb = $this->db->getQueryBuilder();
$qb->select('c.*')
->from('deck_cards', 'c')
->innerJoin('c', 'deck_stacks', 's', 's.id = c.stack_id')
->innerJoin('s', 'deck_boards', 'b', 'b.id = s.board_id')
->where($qb->expr()->eq('board_id', $qb->createNamedParameter($boardId, IQueryBuilder::PARAM_INT)))
->andWhere($qb->expr()->eq('archived', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL)))
->setMaxResults($limit)
->setFirstResult($offset)
->orderBy('c.lastmodified')
->addOrderBy('c.id');
return $this->findEntities($qb);
}
public function findAllWithDue($boardId) {
$qb = $this->db->getQueryBuilder();
$qb->select('c.*')
@@ -560,10 +575,10 @@ class CardMapper extends QBMapper implements IPermissionMapper {
$qb->execute();
}
public function isOwner($userId, $cardId): bool {
public function isOwner($userId, $id): bool {
$sql = 'SELECT owner FROM `*PREFIX*deck_boards` WHERE `id` IN (SELECT board_id FROM `*PREFIX*deck_stacks` WHERE id IN (SELECT stack_id FROM `*PREFIX*deck_cards` WHERE id = ?))';
$stmt = $this->db->prepare($sql);
$stmt->bindParam(1, $cardId, \PDO::PARAM_INT, 0);
$stmt->bindParam(1, $id, \PDO::PARAM_INT, 0);
$stmt->execute();
$row = $stmt->fetch();
return ($row['owner'] === $userId);

View File

@@ -24,6 +24,7 @@
namespace OCA\Deck\Db;
use OCP\ICacheFactory;
use OCP\ICache;
use OCP\IDBConnection;
use OCP\IRequest;
@@ -31,13 +32,16 @@ class ChangeHelper {
public const TYPE_BOARD = 'boardChanged';
public const TYPE_CARD = 'cardChanged';
private $db;
private IDBConnection $db;
private ICache $cache;
private IRequest $request;
private ?string $userId;
public function __construct(
IDBConnection $db,
ICacheFactory $cacheFactory,
IRequest $request,
$userId
?string $userId
) {
$this->db = $db;
$this->cache = $cacheFactory->createDistributed('deck_changes');

View File

@@ -23,17 +23,15 @@
namespace OCA\Deck\Db;
use OCP\AppFramework\Db\Mapper;
use OCP\AppFramework\Db\QBMapper;
use OCP\DB\QueryBuilder\IQueryBuilder;
/**
* Class DeckMapper
*
* @package OCA\Deck\Db
* @deprecated use QBMapper
*
* TODO: Move to QBMapper once Nextcloud 14 is a minimum requirement
*/
class DeckMapper extends Mapper {
class DeckMapper extends QBMapper {
/**
* @param $id
@@ -42,11 +40,11 @@ class DeckMapper extends Mapper {
* @throws \OCP\AppFramework\Db\DoesNotExistException
*/
public function find($id) {
$sql = 'SELECT * FROM `' . $this->tableName . '` ' . 'WHERE `id` = ?';
return $this->findEntity($sql, [$id]);
}
$qb = $this->db->getQueryBuilder();
$qb->select('*')
->from($this->getTableName())
->where($qb->expr()->eq('id', $qb->createNamedParameter($id, IQueryBuilder::PARAM_INT)));
protected function execute($sql, array $params = [], $limit = null, $offset = null) {
return parent::execute($sql, $params, $limit, $offset);
return $this->findEntity($qb);
}
}

View File

@@ -26,6 +26,7 @@ namespace OCA\Deck\Db;
use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Db\Entity;
use OCP\AppFramework\Db\MultipleObjectsReturnedException;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
class LabelMapper extends DeckMapper implements IPermissionMapper {
@@ -33,41 +34,105 @@ class LabelMapper extends DeckMapper implements IPermissionMapper {
parent::__construct($db, 'deck_labels', Label::class);
}
public function findAll($boardId, $limit = null, $offset = null) {
$sql = 'SELECT * FROM `*PREFIX*deck_labels` WHERE `board_id` = ? ORDER BY `id`';
return $this->findEntities($sql, [$boardId], $limit, $offset);
/**
* @param numeric $boardId
* @param int|null $limit
* @param int|null $offset
* @return Label[]
* @throws \OCP\DB\Exception
*/
public function findAll($boardId, $limit = null, $offset = null): array {
$qb = $this->db->getQueryBuilder();
$qb->select('*')
->from($this->getTableName())
->where($qb->expr()->eq('board_id', $qb->createNamedParameter($boardId, IQueryBuilder::PARAM_INT)))
->setMaxResults($limit)
->setFirstResult($offset);
return $this->findEntities($qb);
}
public function delete(\OCP\AppFramework\Db\Entity $entity) {
/**
* @param Entity $entity
* @return Entity
* @throws \OCP\DB\Exception
*/
public function delete(Entity $entity): Entity {
// delete assigned labels
$this->deleteLabelAssignments($entity->getId());
// delete label
return parent::delete($entity);
}
public function findAssignedLabelsForCard($cardId, $limit = null, $offset = null) {
$sql = 'SELECT l.*,card_id FROM `*PREFIX*deck_assigned_labels` as al INNER JOIN *PREFIX*deck_labels as l ON l.id = al.label_id WHERE `card_id` = ? ORDER BY l.id';
return $this->findEntities($sql, [$cardId], $limit, $offset);
}
public function findAssignedLabelsForBoard($boardId, $limit = null, $offset = null) {
$sql = 'SELECT c.id as card_id, l.id as id, l.title as title, l.color as color FROM `*PREFIX*deck_cards` as c ' .
' INNER JOIN `*PREFIX*deck_assigned_labels` as al ON al.card_id = c.id INNER JOIN `*PREFIX*deck_labels` as l ON al.label_id = l.id WHERE board_id=? ORDER BY l.id';
return $this->findEntities($sql, [$boardId], $limit, $offset);
/**
* @param numeric $cardId
* @param int|null $limit
* @param int|null $offset
* @return Label[]
* @throws \OCP\DB\Exception
*/
public function findAssignedLabelsForCard($cardId, $limit = null, $offset = null): array {
$qb = $this->db->getQueryBuilder();
$qb->select('l.*', 'card_id')
->from($this->getTableName(), 'l')
->innerJoin('l', 'deck_assigned_labels', 'al', 'l.id = al.label_id')
->where($qb->expr()->eq('card_id', $qb->createNamedParameter($cardId, IQueryBuilder::PARAM_INT)))
->orderBy('l.id')
->setMaxResults($limit)
->setFirstResult($offset);
return $this->findEntities($qb);
}
public function insert(Entity $entity) {
/**
* @param numeric $boardId
* @param int|null $limit
* @param int|null $offset
* @return Label[]
* @throws \OCP\DB\Exception
*/
public function findAssignedLabelsForBoard($boardId, $limit = null, $offset = null): array {
$qb = $this->db->getQueryBuilder();
$qb->select('l.id as id', 'l.title as title', 'l.color as color')
->selectAlias('c.id', 'card_id')
->from($this->getTableName(), 'l')
->innerJoin('l', 'deck_assigned_labels', 'al', 'al.label_id = l.id')
->innerJoin('l', 'deck_cards', 'c', 'al.card_id = c.id')
->where($qb->expr()->eq('board_id', $qb->createNamedParameter($boardId, IQueryBuilder::PARAM_INT)))
->orderBy('l.id')
->setMaxResults($limit)
->setFirstResult($offset);
return $this->findEntities($qb);
}
/**
* @param Entity $entity
* @return Entity
* @throws \OCP\DB\Exception
*/
public function insert(Entity $entity): Entity {
$entity->setLastModified(time());
return parent::insert($entity);
}
public function update(Entity $entity, $updateModified = true) {
/**
* @param Entity $entity
* @param bool $updateModified
* @return Entity
* @throws \OCP\DB\Exception
*/
public function update(Entity $entity, $updateModified = true): Entity {
if ($updateModified) {
$entity->setLastModified(time());
}
return parent::update($entity);
}
/**
* @param numeric $boardId
* @return array
* @throws \OCP\DB\Exception
*/
public function getAssignedLabelsForBoard($boardId) {
$labels = $this->findAssignedLabelsForBoard($boardId);
$result = [];
@@ -80,27 +145,51 @@ class LabelMapper extends DeckMapper implements IPermissionMapper {
return $result;
}
/**
* @param numeric $labelId
* @return void
* @throws \OCP\DB\Exception
*/
public function deleteLabelAssignments($labelId) {
$sql = 'DELETE FROM `*PREFIX*deck_assigned_labels` WHERE label_id = ?';
$stmt = $this->db->prepare($sql);
$stmt->bindParam(1, $labelId, \PDO::PARAM_INT, 0);
$stmt->execute();
$qb = $this->db->getQueryBuilder();
$qb->delete('deck_assigned_labels')
->where($qb->expr()->eq('label_id', $qb->createNamedParameter($labelId, IQueryBuilder::PARAM_INT)));
$qb->executeStatement();
}
/**
* @param numeric $cardId
* @return void
* @throws \OCP\DB\Exception
*/
public function deleteLabelAssignmentsForCard($cardId) {
$sql = 'DELETE FROM `*PREFIX*deck_assigned_labels` WHERE card_id = ?';
$stmt = $this->db->prepare($sql);
$stmt->bindParam(1, $cardId, \PDO::PARAM_INT, 0);
$stmt->execute();
$qb = $this->db->getQueryBuilder();
$qb->delete('deck_assigned_labels')
->where($qb->expr()->eq('card_id', $qb->createNamedParameter($cardId, IQueryBuilder::PARAM_INT)));
$qb->executeStatement();
}
/**
* @param string $userId
* @param numeric $labelId
* @return bool
* @throws \OCP\DB\Exception
*/
public function isOwner($userId, $labelId): bool {
$sql = 'SELECT owner FROM `*PREFIX*deck_boards` WHERE `id` IN (SELECT board_id FROM `*PREFIX*deck_labels` WHERE id = ?)';
$stmt = $this->execute($sql, [$labelId]);
$row = $stmt->fetch();
return ($row['owner'] === $userId);
$qb = $this->db->getQueryBuilder();
$qb->select('l.id')
->from($this->getTableName(), 'l')
->innerJoin('l', 'deck_boards', 'b', 'l.board_id = b.id')
->where($qb->expr()->eq('l.id', $qb->createNamedParameter($labelId, IQueryBuilder::PARAM_INT)))
->andWhere($qb->expr()->eq('b.owner', $qb->createNamedParameter($userId, IQueryBuilder::PARAM_STR)));
return count($qb->executeQuery()->fetchAll()) > 0;
}
/**
* @param numeric $id
* @return int|null
*/
public function findBoardId($id): ?int {
try {
$entity = $this->find($id);

View File

@@ -72,6 +72,9 @@ class RelationalEntity extends Entity implements \JsonSerializable {
$propertyReflection = $reflection->getProperty($property);
if (!$propertyReflection->isPrivate() && !in_array($property, $this->_resolvedProperties, true)) {
$json[$property] = $this->getter($property);
if ($json[$property] instanceof \DateTimeInterface) {
$json[$property] = $json[$property]->format('c');
}
}
}
}

View File

@@ -26,6 +26,7 @@ namespace OCA\Deck\Db;
use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Db\Entity;
use OCP\AppFramework\Db\MultipleObjectsReturnedException;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
class StackMapper extends DeckMapper implements IPermissionMapper {
@@ -38,62 +39,112 @@ class StackMapper extends DeckMapper implements IPermissionMapper {
/**
* @param $id
* @throws MultipleObjectsReturnedException
* @param numeric $id
* @return Stack
* @throws DoesNotExistException
* @throws MultipleObjectsReturnedException
* @throws \OCP\DB\Exception
*/
public function find($id): Stack {
$sql = 'SELECT * FROM `*PREFIX*deck_stacks` ' .
'WHERE `id` = ?';
return $this->findEntity($sql, [$id]);
$qb = $this->db->getQueryBuilder();
$qb->select('*')
->from($this->getTableName())
->where($qb->expr()->eq('id', $qb->createNamedParameter($id, IQueryBuilder::PARAM_INT)));
return $this->findEntity($qb);
}
/**
* @param $cardId
* @return Stack|null
* @throws \OCP\DB\Exception
*/
public function findStackFromCardId($cardId): ?Stack {
$sql = <<<SQL
SELECT s.*
FROM `*PREFIX*deck_stacks` as `s`
INNER JOIN `*PREFIX*deck_cards` as `c` ON s.id = c.stack_id
WHERE c.id = ?
SQL;
$qb = $this->db->getQueryBuilder();
$qb->select('s.*')
->from($this->getTableName(), 's')
->innerJoin('s', 'deck_cards', 'c', 's.id = c.stack_id')
->where($qb->expr()->eq('c.id', $qb->createNamedParameter($cardId, IQueryBuilder::PARAM_INT)));
try {
return $this->findEntity($sql, [$cardId]);
return $this->findEntity($qb);
} catch (MultipleObjectsReturnedException|DoesNotExistException $e) {
}
return null;
}
/**
* @param numeric $boardId
* @param int|null $limit
* @param int|null $offset
* @return Stack[]
* @throws \OCP\DB\Exception
*/
public function findAll($boardId, $limit = null, $offset = null): array {
$qb = $this->db->getQueryBuilder();
$qb->select('*')
->from($this->getTableName())
->where($qb->expr()->eq('board_id', $qb->createNamedParameter($boardId, IQueryBuilder::PARAM_INT)))
->andWhere($qb->expr()->eq('deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT)))
->setFirstResult($offset)
->setMaxResults($limit);
public function findAll($boardId, $limit = null, $offset = null) {
$sql = 'SELECT * FROM `*PREFIX*deck_stacks` WHERE `board_id` = ? AND deleted_at = 0 ORDER BY `order`, `id`';
return $this->findEntities($sql, [$boardId], $limit, $offset);
return $this->findEntities($qb);
}
/**
* @param numeric $boardId
* @param int|null $limit
* @param int|null $offset
* @return Stack[]
* @throws \OCP\DB\Exception
*/
public function findDeleted($boardId, $limit = null, $offset = null) {
$sql = 'SELECT * FROM `*PREFIX*deck_stacks` s
WHERE `s`.`board_id` = ? AND NOT s.deleted_at = 0';
return $this->findEntities($sql, [$boardId], $limit, $offset);
$qb = $this->db->getQueryBuilder();
$qb->select('*')
->from($this->getTableName())
->where($qb->expr()->eq('board_id', $qb->createNamedParameter($boardId, IQueryBuilder::PARAM_INT)))
->andWhere($qb->expr()->neq('deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT)))
->setFirstResult($offset)
->setMaxResults($limit);
return $this->findEntities($qb);
}
public function delete(Entity $entity) {
/**
* @param Entity $entity
* @return Entity
* @throws \OCP\DB\Exception
*/
public function delete(Entity $entity): Entity {
// delete cards on stack
$this->cardMapper->deleteByStack($entity->getId());
return parent::delete($entity);
}
public function isOwner($userId, $stackId): bool {
$sql = 'SELECT owner FROM `*PREFIX*deck_boards` WHERE `id` IN (SELECT board_id FROM `*PREFIX*deck_stacks` WHERE id = ?)';
$stmt = $this->execute($sql, [$stackId]);
$row = $stmt->fetch();
return ($row['owner'] === $userId);
/**
* @param numeric $userId
* @param numeric $stackId
* @return bool
* @throws \OCP\DB\Exception
*/
public function isOwner($userId, $id): bool {
$qb = $this->db->getQueryBuilder();
$qb->select('s.id')
->from($this->getTableName(), 's')
->innerJoin('s', 'deck_boards', 'b', 'b.id = s.board_id')
->where($qb->expr()->eq('s.id', $qb->createNamedParameter($id, IQueryBuilder::PARAM_INT)))
->andWhere($qb->expr()->eq('owner', $qb->createNamedParameter($userId, IQueryBuilder::PARAM_STR)));
return count($qb->executeQuery()->fetchAll()) > 0;
}
/**
* @param numeric $id
* @return int|null
* @throws \OCP\DB\Exception
*/
public function findBoardId($id): ?int {
try {
$entity = $this->find($id);

View File

@@ -1,11 +1,8 @@
/*
* @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>
<?php
/**
* @copyright Copyright (c) 2022 Raul Ferreira Fuentes <raul@nextcloud.com>
*
* @author Julius Härtl <jus@bitgrid.net>
* @author Artem Anufrij <artem.anufrij@live.de>
* @author Marin Treselj <marin@pixelipo.com>
* @author Oskar Kurz <oskar.kurz@gmail.com>
* @author Ryan Fletcher <ryan.fletcher@codepassion.ca>
* @author Raul Ferreira Fuentes <raul@nextcloud.com>
*
* @license GNU AGPL version 3 or any later version
*
@@ -23,6 +20,26 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Deck\Model;
@import 'icons';
@import 'print';
use OCA\Deck\Db\Board;
class BoardSummary extends Board {
private Board $board;
public function __construct(Board $board) {
parent::__construct();
$this->board = $board;
}
public function jsonSerialize(): array {
return [
'id' => $this->getId(),
'title' => $this->getTitle()
];
}
public function __call($name, $arguments) {
return $this->board->__call($name, $arguments);
}
}

92
lib/Model/CardDetails.php Normal file
View File

@@ -0,0 +1,92 @@
<?php
/**
* @copyright Copyright (c) 2022 Raul Ferreira Fuentes <raul@nextcloud.com>
*
* @author Raul Ferreira Fuentes <raul@nextcloud.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\Model;
use DateTime;
use OCA\Deck\Db\Board;
use OCA\Deck\Db\Card;
class CardDetails extends Card {
private Card $card;
private ?Board $board;
public function __construct(Card $card, ?Board $board = null) {
parent::__construct();
$this->card = $card;
$this->board = $board;
}
public function setBoard(?Board $board): void {
$this->board = $board;
}
public function jsonSerialize(array $extras = []): array {
$array = $this->card->jsonSerialize();
unset($array['notified'], $array['descriptionPrev'], $array['relatedStack'], $array['relatedBoard']);
$array['overdue'] = $this->getDueStatus();
$this->appendBoardDetails($array);
return $array;
}
private function getDueStatus(): int {
$today = new DateTime();
$today->setTime(0, 0);
$match_date = $this->card->getDuedate();
if (!$match_date) {
return Card::DUEDATE_FUTURE;
}
$match_date->setTime(0, 0);
$diff = $today->diff($match_date);
$diffDays = (int) $diff->format('%R%a'); // Extract days count in interval
if ($diffDays === 1) {
return Card::DUEDATE_NEXT;
}
if ($diffDays === 0) {
return Card::DUEDATE_NOW;
}
if ($diffDays < 0) {
return Card::DUEDATE_OVERDUE;
}
return Card::DUEDATE_FUTURE;
}
private function appendBoardDetails(&$array): void {
if (!$this->board) {
return;
}
$array['boardId'] = $this->board->id;
$array['board'] = (new BoardSummary($this->board))->jsonSerialize();
}
public function __call($name, $arguments) {
return $this->card->__call($name, $arguments);
}
}

View File

@@ -129,7 +129,7 @@ class NotificationHelper {
->setSubject('card-overdue', [
$card->getTitle(), $board->getTitle()
])
->setDateTime(new DateTime($card->getDuedate()));
->setDateTime($card->getDuedate());
$this->notificationManager->notify($notification);
}
}
@@ -242,7 +242,7 @@ class NotificationHelper {
}
return $this->boards[$boardId];
}
private function generateBoardShared(Board $board, string $userId): INotification {
$notification = $this->notificationManager->createNotification();
$notification

View File

@@ -114,7 +114,7 @@ class Notifier implements INotifier {
$dn = $params[2];
}
$notification->setParsedSubject(
(string) $l->t('The card "%s" on "%s" has been assigned to you by %s.', [$params[0], $params[1], $dn])
$l->t('The card "%s" on "%s" has been assigned to you by %s.', [$params[0], $params[1], $dn])
);
$notification->setRichSubject(
$l->t('{user} has assigned the card {deck-card} on {deck-board} to you.'),
@@ -151,7 +151,7 @@ class Notifier implements INotifier {
}
$notification->setParsedSubject(
(string) $l->t('The card "%s" on "%s" has reached its due date.', $params)
$l->t('The card "%s" on "%s" has reached its due date.', $params)
);
$notification->setRichSubject(
$l->t('The card {deck-card} on {deck-board} has reached its due date.'),
@@ -189,7 +189,7 @@ class Notifier implements INotifier {
$dn = $params[2];
}
$notification->setParsedSubject(
(string) $l->t('%s has mentioned you in a comment on "%s".', [$dn, $params[0]])
$l->t('%s has mentioned you in a comment on "%s".', [$dn, $params[0]])
);
$notification->setRichSubject(
$l->t('{user} has mentioned you in a comment on {deck-card}.'),
@@ -226,7 +226,7 @@ class Notifier implements INotifier {
$dn = $params[1];
}
$notification->setParsedSubject(
(string) $l->t('The board "%s" has been shared with you by %s.', [$params[0], $dn])
$l->t('The board "%s" has been shared with you by %s.', [$params[0], $dn])
);
$notification->setRichSubject(
$l->t('{user} has shared {deck-board} with you.'),

View File

@@ -54,22 +54,11 @@ use OCP\IURLGenerator;
class DeckProvider implements IFullTextSearchProvider {
public const DECK_PROVIDER_ID = 'deck';
/** @var IL10N */
private $l10n;
/** @var IUrlGenerator */
private $urlGenerator;
/** @var FullTextSearchService */
private $fullTextSearchService;
/** @var IRunner */
private $runner;
/** @var IIndexOptions */
private $indexOptions = [];
private IL10N $l10n;
private IUrlGenerator $urlGenerator;
private FullTextSearchService $fullTextSearchService;
private ?IRunner $runner = null;
private ?IIndexOptions $indexOptions = null;
/**

View File

@@ -0,0 +1,169 @@
<?php
/**
* @copyright Copyright (c) 2022 Julien Veyssier <eneiluj@posteo.net>
*
* @author Julien Veyssier <eneiluj@posteo.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\Reference;
use OCA\Deck\AppInfo\Application;
use OCA\Deck\Db\Assignment;
use OCA\Deck\Db\Attachment;
use OCA\Deck\Db\Label;
use OCA\Deck\Model\CardDetails;
use OCA\Deck\Service\BoardService;
use OCA\Deck\Service\CardService;
use OCA\Deck\Service\StackService;
use OCP\Collaboration\Reference\IReference;
use OCP\Collaboration\Reference\IReferenceProvider;
use OCP\Collaboration\Reference\Reference;
use OCP\IURLGenerator;
class CardReferenceProvider implements IReferenceProvider {
private CardService $cardService;
private IURLGenerator $urlGenerator;
private BoardService $boardService;
private StackService $stackService;
private ?string $userId;
public function __construct(CardService $cardService,
BoardService $boardService,
StackService $stackService,
IURLGenerator $urlGenerator,
?string $userId) {
$this->cardService = $cardService;
$this->urlGenerator = $urlGenerator;
$this->boardService = $boardService;
$this->stackService = $stackService;
$this->userId = $userId;
}
/**
* @inheritDoc
*/
public function matchReference(string $referenceText): bool {
$start = $this->urlGenerator->getAbsoluteURL('/apps/' . Application::APP_ID);
$startIndex = $this->urlGenerator->getAbsoluteURL('/index.php/apps/' . Application::APP_ID);
// link example: https://nextcloud.local/index.php/apps/deck/#/board/2/card/11
$noIndexMatch = preg_match('/^' . preg_quote($start, '/') . '\/#\/board\/[0-9]+\/card\/[0-9]+$/', $referenceText) === 1;
$indexMatch = preg_match('/^' . preg_quote($startIndex, '/') . '\/#\/board\/[0-9]+\/card\/[0-9]+$/', $referenceText) === 1;
return $noIndexMatch || $indexMatch;
}
/**
* @inheritDoc
*/
public function resolveReference(string $referenceText): ?IReference {
if ($this->matchReference($referenceText)) {
$ids = $this->getBoardCardId($referenceText);
if ($ids !== null) {
[$boardId, $cardId] = $ids;
$card = $this->cardService->find((int) $cardId)->jsonSerialize();
$board = $this->boardService->find((int) $boardId)->jsonSerialize();
$stack = $this->stackService->find((int) $card['stackId'])->jsonSerialize();
$card = $this->sanitizeSerializedCard($card);
$board = $this->sanitizeSerializedBoard($board);
$stack = $this->sanitizeSerializedStack($stack);
$reference = new Reference($referenceText);
$reference->setRichObject(Application::APP_ID . '-card', [
'id' => $boardId . '/' . $cardId,
'card' => $card,
'board' => $board,
'stack' => $stack,
]);
return $reference;
}
}
return null;
}
private function sanitizeSerializedStack(array $stack): array {
$stack['cards'] = array_map(function (CardDetails $cardDetails) {
$result = $cardDetails->jsonSerialize();
unset($result['assignedUsers']);
return $result;
}, $stack['cards']);
return $stack;
}
private function sanitizeSerializedBoard(array $board): array {
unset($board['labels']);
$board['owner'] = $board['owner']->jsonSerialize();
unset($board['acl']);
unset($board['users']);
return $board;
}
private function sanitizeSerializedCard(array $card): array {
$card['labels'] = array_map(function (Label $label) {
return $label->jsonSerialize();
}, $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();
unset($card['relatedStack']);
unset($card['relatedBoard']);
$card['attachments'] = array_map(function (Attachment $attachment) {
return $attachment->jsonSerialize();
}, $card['attachments']);
return $card;
}
private function getBoardCardId(string $url): ?array {
$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);
if ($matches && count($matches) > 2) {
return [$matches[1], $matches[2]];
}
preg_match('/^' . preg_quote($startIndex, '/') . '\/#\/board\/([0-9]+)\/card\/([0-9]+)$/', $url, $matches2);
if ($matches2 && count($matches2) > 2) {
return [$matches2[1], $matches2[2]];
}
return null;
}
public function getCachePrefix(string $referenceId): string {
$ids = $this->getBoardCardId($referenceId);
if ($ids !== null) {
[$boardId, $cardId] = $ids;
return $boardId . '/' . $cardId;
}
return $referenceId;
}
public function getCacheKey(string $referenceId): ?string {
return $this->userId ?? '';
}
}

View File

@@ -60,22 +60,23 @@ class AttachmentService {
private $activityManager;
/** @var ChangeHelper */
private $changeHelper;
/** @var IUserManager */
private $userManager;
private IUserManager $userManager;
/** @var AttachmentServiceValidator */
private $attachmentServiceValidator;
private AttachmentServiceValidator $attachmentServiceValidator;
public function __construct(AttachmentMapper $attachmentMapper,
CardMapper $cardMapper,
IUserManager $userManager,
ChangeHelper $changeHelper,
PermissionService $permissionService,
Application $application,
AttachmentCacheHelper $attachmentCacheHelper,
$userId,
IL10N $l10n,
ActivityManager $activityManager,
AttachmentServiceValidator $attachmentServiceValidator) {
public function __construct(
AttachmentMapper $attachmentMapper,
CardMapper $cardMapper,
IUserManager $userManager,
ChangeHelper $changeHelper,
PermissionService $permissionService,
Application $application,
AttachmentCacheHelper $attachmentCacheHelper,
$userId,
IL10N $l10n,
ActivityManager $activityManager,
AttachmentServiceValidator $attachmentServiceValidator
) {
$this->attachmentMapper = $attachmentMapper;
$this->cardMapper = $cardMapper;
$this->permissionService = $permissionService;

View File

@@ -24,7 +24,6 @@
namespace OCA\Deck\Service;
use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
use OCA\Deck\Activity\ActivityManager;
use OCA\Deck\Activity\ChangeSet;
use OCA\Deck\AppInfo\Application;
@@ -45,8 +44,10 @@ use OCA\Deck\Notification\NotificationHelper;
use OCP\AppFramework\Db\DoesNotExistException;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\IGroupManager;
use OCP\IL10N;
use OCP\DB\Exception as DbException;
use OCA\Deck\Db\Board;
use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\LabelMapper;
@@ -54,30 +55,29 @@ use OCP\IUserManager;
use OCA\Deck\BadRequestException;
use OCA\Deck\Validators\BoardServiceValidator;
use OCP\IURLGenerator;
use OCP\Server;
class BoardService {
private $boardMapper;
private $stackMapper;
private $labelMapper;
private $aclMapper;
/** @var IConfig */
private $config;
private $l10n;
private $permissionService;
private $notificationHelper;
private $assignedUsersMapper;
private $userManager;
private $groupManager;
private $userId;
private $activityManager;
private $eventDispatcher;
private $changeHelper;
private $cardMapper;
private $boardsCache = null;
private $urlGenerator;
private $boardServiceValidator;
private BoardMapper $boardMapper;
private StackMapper $stackMapper;
private LabelMapper $labelMapper;
private AclMapper $aclMapper;
private IConfig $config;
private IL10N $l10n;
private PermissionService $permissionService;
private NotificationHelper $notificationHelper;
private AssignmentMapper $assignedUsersMapper;
private IUserManager $userManager;
private IGroupManager $groupManager;
private ?string $userId;
private ActivityManager $activityManager;
private IEventDispatcher $eventDispatcher;
private ChangeHelper $changeHelper;
private CardMapper $cardMapper;
private ?array $boardsCache = null;
private IURLGenerator $urlGenerator;
private IDBConnection $connection;
private BoardServiceValidator $boardServiceValidator;
public function __construct(
BoardMapper $boardMapper,
@@ -96,8 +96,9 @@ class BoardService {
IEventDispatcher $eventDispatcher,
ChangeHelper $changeHelper,
IURLGenerator $urlGenerator,
IDBConnection $connection,
BoardServiceValidator $boardServiceValidator,
$userId
?string $userId
) {
$this->boardMapper = $boardMapper;
$this->stackMapper = $stackMapper;
@@ -116,6 +117,7 @@ class BoardService {
$this->userId = $userId;
$this->urlGenerator = $urlGenerator;
$this->cardMapper = $cardMapper;
$this->connection = $connection;
$this->boardServiceValidator = $boardServiceValidator;
}
@@ -479,7 +481,7 @@ class BoardService {
// TODO: use the dispatched event for this
try {
$resourceProvider = \OC::$server->query(\OCA\Deck\Collaboration\Resources\ResourceProvider::class);
$resourceProvider = Server::get(\OCA\Deck\Collaboration\Resources\ResourceProvider::class);
$resourceProvider->invalidateAccessCache($boardId);
} catch (\Exception $e) {
}
@@ -521,18 +523,12 @@ class BoardService {
}
/**
* @param $id
* @return \OCP\AppFramework\Db\Entity
* @throws DoesNotExistException
* @throws \OCA\Deck\NoPermissionException
* @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException
* @throws BadRequestException
*/
public function deleteAcl($id) {
if (is_numeric($id) === false) {
throw new BadRequestException('id must be a number');
}
public function deleteAcl(int $id): bool {
$this->permissionService->checkPermission($this->aclMapper, $id, Acl::PERMISSION_SHARE);
/** @var Acl $acl */
$acl = $this->aclMapper->find($id);
@@ -551,16 +547,14 @@ class BoardService {
$version = \OCP\Util::getVersion()[0];
if ($version >= 16) {
try {
$resourceProvider = \OC::$server->query(\OCA\Deck\Collaboration\Resources\ResourceProvider::class);
$resourceProvider = Server::get(\OCA\Deck\Collaboration\Resources\ResourceProvider::class);
$resourceProvider->invalidateAccessCache($acl->getBoardId());
} catch (\Exception $e) {
}
}
$delete = $this->aclMapper->delete($acl);
$this->eventDispatcher->dispatchTyped(new AclDeletedEvent($acl));
return $delete;
return (bool) $this->aclMapper->delete($acl);
}
/**
@@ -612,7 +606,7 @@ class BoardService {
}
public function transferBoardOwnership(int $boardId, string $newOwner, bool $changeContent = false): Board {
\OC::$server->getDatabaseConnection()->beginTransaction();
$this->connection->beginTransaction();
try {
$board = $this->boardMapper->find($boardId);
$previousOwner = $board->getOwner();
@@ -621,7 +615,10 @@ class BoardService {
if (!$changeContent) {
try {
$this->addAcl($boardId, Acl::PERMISSION_TYPE_USER, $previousOwner, true, true, true);
} catch (UniqueConstraintViolationException $e) {
} catch (DbException $e) {
if ($e->getReason() !== DbException::REASON_UNIQUE_CONSTRAINT_VIOLATION) {
throw $e;
}
}
}
$this->boardMapper->transferOwnership($previousOwner, $newOwner, $boardId);
@@ -631,10 +628,10 @@ class BoardService {
$this->assignedUsersMapper->remapAssignedUser($boardId, $previousOwner, $newOwner);
$this->cardMapper->remapCardOwner($boardId, $previousOwner, $newOwner);
}
\OC::$server->getDatabaseConnection()->commit();
$this->connection->commit();
return $this->boardMapper->find($boardId);
} catch (\Throwable $e) {
\OC::$server->getDatabaseConnection()->rollBack();
$this->connection->rollBack();
throw $e;
}
}

View File

@@ -46,27 +46,31 @@ use OCA\Deck\BadRequestException;
use OCA\Deck\Validators\CardServiceValidator;
use OCP\Comments\ICommentsManager;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IRequest;
use OCP\IUserManager;
use OCP\IURLGenerator;
use Psr\Log\LoggerInterface;
class CardService {
private $cardMapper;
private $stackMapper;
private $boardMapper;
private $labelMapper;
private $permissionService;
private $boardService;
private $notificationHelper;
private $assignedUsersMapper;
private $attachmentService;
private $currentUser;
private $activityManager;
private $commentsManager;
private $changeHelper;
private $eventDispatcher;
private $userManager;
private $urlGenerator;
private $cardServiceValidator;
private CardMapper $cardMapper;
private StackMapper $stackMapper;
private BoardMapper $boardMapper;
private LabelMapper $labelMapper;
private PermissionService $permissionService;
private BoardService $boardService;
private NotificationHelper $notificationHelper;
private AssignmentMapper $assignedUsersMapper;
private AttachmentService $attachmentService;
private ?string $currentUser;
private ActivityManager $activityManager;
private ICommentsManager $commentsManager;
private ChangeHelper $changeHelper;
private IEventDispatcher $eventDispatcher;
private IUserManager $userManager;
private IURLGenerator $urlGenerator;
private LoggerInterface $logger;
private IRequest $request;
private CardServiceValidator $cardServiceValidator;
public function __construct(
CardMapper $cardMapper,
@@ -84,8 +88,10 @@ class CardService {
ChangeHelper $changeHelper,
IEventDispatcher $eventDispatcher,
IURLGenerator $urlGenerator,
LoggerInterface $logger,
IRequest $request,
CardServiceValidator $cardServiceValidator,
$userId
?string $userId
) {
$this->cardMapper = $cardMapper;
$this->stackMapper = $stackMapper;
@@ -103,6 +109,8 @@ class CardService {
$this->eventDispatcher = $eventDispatcher;
$this->currentUser = $userId;
$this->urlGenerator = $urlGenerator;
$this->logger = $logger;
$this->request = $request;
$this->cardServiceValidator = $cardServiceValidator;
}
@@ -136,23 +144,18 @@ class CardService {
}
/**
* @param $cardId
* @return \OCA\Deck\Db\RelationalEntity
* @throws \OCA\Deck\NoPermissionException
* @throws \OCP\AppFramework\Db\DoesNotExistException
* @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException
* @throws BadRequestException
*/
public function find($cardId) {
if (is_numeric($cardId) === false) {
throw new BadRequestException('card id must be a number');
}
public function find(int $cardId) {
$this->permissionService->checkPermission($this->cardMapper, $cardId, Acl::PERMISSION_READ);
$card = $this->cardMapper->find($cardId);
$assignedUsers = $this->assignedUsersMapper->findAll($card->getId());
$attachments = $this->attachmentService->findAll($cardId, true);
if (\OC::$server->getRequest()->getParam('apiVersion') === '1.0') {
if ($this->request->getParam('apiVersion') === '1.0') {
$attachments = array_filter($attachments, function ($attachment) {
return $attachment->getType() === 'deck_file';
});
@@ -167,7 +170,7 @@ class CardService {
try {
$this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_READ);
} catch (NoPermissionException $e) {
\OC::$server->getLogger()->error('Unable to check permission for a previously obtained board ' . $boardId, ['exception' => $e]);
$this->logger->error('Unable to check permission for a previously obtained board ' . $boardId, ['exception' => $e]);
return [];
}
$cards = $this->cardMapper->findCalendarEntries($boardId);
@@ -295,11 +298,11 @@ class CardService {
$card->setType($type);
$card->setOrder($order);
$card->setOwner($owner);
$card->setDuedate($duedate);
$card->setDuedate($duedate ? new \DateTime($duedate) : null);
$resetDuedateNotification = false;
if (
$card->getDuedate() === null ||
(new \DateTime($card->getDuedate())) != (new \DateTime($changes->getBefore()->getDuedate() ?? ''))
($card->getDuedate()) != ($changes->getBefore()->getDuedate())
) {
$card->setNotified(false);
$resetDuedateNotification = true;
@@ -428,7 +431,7 @@ class CardService {
* @throws StatusException
* @throws \OCA\Deck\NoPermissionException
* @throws \OCP\AppFramework\Db\DoesNotExistException
* @throws \OCP\AppFramework\Db\
* @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException
* @throws BadRequestException
*/
public function archive($id) {

View File

@@ -31,6 +31,7 @@ use OCA\Circles\Model\Circle;
use OCA\Circles\Model\Member;
use OCA\Circles\Model\Probes\CircleProbe;
use OCP\App\IAppManager;
use OCP\Server;
use Throwable;
/**
@@ -38,7 +39,7 @@ use Throwable;
* having the app disabled is properly handled
*/
class CirclesService {
private $circlesEnabled;
private bool $circlesEnabled;
private $userCircleCache = [];
@@ -58,8 +59,7 @@ class CirclesService {
try {
// Enforce current user condition since we always want the full list of members
/** @var CirclesManager $circlesManager */
$circlesManager = \OC::$server->get(CirclesManager::class);
$circlesManager = Server::get(CirclesManager::class);
$circlesManager->startSuperSession();
return $circlesManager->getCircle($circleId);
} catch (Throwable $e) {
@@ -77,8 +77,7 @@ class CirclesService {
}
try {
/** @var CirclesManager $circlesManager */
$circlesManager = \OC::$server->get(CirclesManager::class);
$circlesManager = Server::get(CirclesManager::class);
$federatedUser = $circlesManager->getFederatedUser($userId, Member::TYPE_USER);
$circlesManager->startSession($federatedUser);
$circle = $circlesManager->getCircle($circleId);
@@ -106,8 +105,7 @@ class CirclesService {
}
try {
/** @var CirclesManager $circlesManager */
$circlesManager = \OC::$server->get(CirclesManager::class);
$circlesManager = Server::get(CirclesManager::class);
$federatedUser = $circlesManager->getFederatedUser($userId, Member::TYPE_USER);
$circlesManager->startSession($federatedUser);
$probe = new CircleProbe();

View File

@@ -40,20 +40,14 @@ use OutOfBoundsException;
use function is_numeric;
class CommentService {
private ICommentsManager $commentsManager;
private IUserManager $userManager;
private CardMapper $cardMapper;
private PermissionService $permissionService;
private ILogger $logger;
private ?string $userId;
/**
* @var ICommentsManager
*/
private $commentsManager;
/**
* @var IUserManager
*/
private $userManager;
/** @var ILogger */
private $logger;
private $userId;
public function __construct(ICommentsManager $commentsManager, PermissionService $permissionService, CardMapper $cardMapper, IUserManager $userManager, ILogger $logger, $userId) {
public function __construct(ICommentsManager $commentsManager, PermissionService $permissionService, CardMapper $cardMapper, IUserManager $userManager, ILogger $logger, ?string $userId) {
$this->commentsManager = $commentsManager;
$this->permissionService = $permissionService;
$this->cardMapper = $cardMapper;

View File

@@ -40,9 +40,9 @@ class ConfigService {
public const SETTING_BOARD_NOTIFICATION_DUE_ALL = 'all';
public const SETTING_BOARD_NOTIFICATION_DUE_DEFAULT = self::SETTING_BOARD_NOTIFICATION_DUE_ASSIGNED;
private $config;
private $userId;
private $groupManager;
private IConfig $config;
private ?string $userId = null;
private IGroupManager $groupManager;
public function __construct(
IConfig $config,
@@ -52,11 +52,14 @@ class ConfigService {
$this->config = $config;
}
public function getUserId() {
public function getUserId(): ?string {
if (!$this->userId) {
$user = \OC::$server->get(IUserSession::class)->getUser();
// We cannot use DI for the userId or UserSession as the ConfigService
// is initiated too early before the session is actually loaded
$user = \OCP\Server::get(IUserSession::class)->getUser();
$this->userId = $user ? $user->getUID() : null;
}
return $this->userId;
}
@@ -75,8 +78,11 @@ class ConfigService {
return $data;
}
public function get($key) {
$result = null;
/**
* @return bool|array{id: string, displayname: string}[]
* @throws NoPermissionException
*/
public function get(string $key) {
[$scope] = explode(':', $key, 2);
switch ($scope) {
case 'groupLimit':
@@ -90,11 +96,12 @@ class ConfigService {
}
return (bool)$this->config->getUserValue($this->getUserId(), Application::APP_ID, 'calendar', true);
case 'cardDetailsInModal':
if ($this->getUserId() === null) {
return false;
}
if ($this->getUserId() === null) {
return false;
}
return (bool)$this->config->getUserValue($this->getUserId(), Application::APP_ID, 'cardDetailsInModal', true);
}
return false;
}
public function isCalendarEnabled(int $boardId = null): bool {
@@ -157,7 +164,10 @@ class ConfigService {
return $result;
}
private function setGroupLimit($value) {
/**
* @return string[]
*/
private function setGroupLimit(array $value): array {
$groups = [];
foreach ($value as $group) {
$groups[] = $group['id'];
@@ -167,7 +177,7 @@ class ConfigService {
return $groups;
}
private function getGroupLimitList() {
private function getGroupLimitList(): array {
$value = $this->config->getAppValue(Application::APP_ID, 'groupLimit', '');
$groups = explode(',', $value);
if ($value === '') {
@@ -176,9 +186,10 @@ class ConfigService {
return $groups;
}
/** @return array{id: string, displayname: string}[] */
private function getGroupLimit() {
$groups = $this->getGroupLimitList();
$groups = array_map(function ($groupId) {
$groups = array_map(function (string $groupId): ?array {
/** @var IGroup $groups */
$group = $this->groupManager->get($groupId);
if ($group === null) {

View File

@@ -88,18 +88,6 @@ class DefaultBoardService {
* @throws BadRequestException
*/
public function createDefaultBoard(string $title, string $userId, string $color) {
if ($title === false || $title === null) {
throw new BadRequestException('title must be provided');
}
if ($userId === false || $userId === null) {
throw new BadRequestException('userId must be provided');
}
if ($color === false || $color === null) {
throw new BadRequestException('color must be provided');
}
$defaultBoard = $this->boardService->create($title, $userId, $color);
$defaultStacks = [];
$defaultCards = [];

View File

@@ -219,8 +219,11 @@ class FileService implements IAttachmentService {
throw new \Exception('no instance id!');
}
$name = 'appdata_' . $instanceId;
/** @var \OCP\Files\Folder $appDataFolder */
$appDataFolder = $this->rootFolder->get($name);
/** @var \OCP\Files\Folder $appDataFolder */
$appDataFolder = $appDataFolder->get('deck');
/** @var \OCP\Files\Folder $cardFolder */
$cardFolder = $appDataFolder->get($folderName);
return $cardFolder->get($attachment->getData());
}

View File

@@ -44,18 +44,19 @@ use OCP\Share\IShare;
use Psr\Log\LoggerInterface;
class FilesAppService implements IAttachmentService, ICustomAttachmentService {
private $request;
private $rootFolder;
private $shareProvider;
private $shareManager;
private $userId;
private $configService;
private $l10n;
private $preview;
private $mimeTypeDetector;
private $permissionService;
private $cardMapper;
private $logger;
private IRequest $request;
private IRootFolder $rootFolder;
private DeckShareProvider $shareProvider;
private IManager $shareManager;
private ?string $userId;
private ConfigService $configService;
private IL10N $l10n;
private IPreview $preview;
private IMimeTypeDetector $mimeTypeDetector;
private PermissionService $permissionService;
private CardMapper $cardMapper;
private LoggerInterface $logger;
private IDBConnection $connection;
public function __construct(
IRequest $request,
@@ -69,7 +70,8 @@ class FilesAppService implements IAttachmentService, ICustomAttachmentService {
PermissionService $permissionService,
CardMapper $cardMapper,
LoggerInterface $logger,
string $userId = null
IDBConnection $connection,
?string $userId
) {
$this->request = $request;
$this->l10n = $l10n;
@@ -83,6 +85,7 @@ class FilesAppService implements IAttachmentService, ICustomAttachmentService {
$this->permissionService = $permissionService;
$this->cardMapper = $cardMapper;
$this->logger = $logger;
$this->connection = $connection;
}
public function listAttachments(int $cardId): array {
@@ -108,9 +111,7 @@ class FilesAppService implements IAttachmentService, ICustomAttachmentService {
}
public function getAttachmentCount(int $cardId): int {
/** @var IDBConnection $qb */
$db = \OC::$server->getDatabaseConnection();
$qb = $db->getQueryBuilder();
$qb = $this->connection->getQueryBuilder();
$qb->select('s.id', 'f.fileid', 'f.path')
->selectAlias('st.id', 'storage_string_id')
->from('share', 's')
@@ -125,7 +126,7 @@ class FilesAppService implements IAttachmentService, ICustomAttachmentService {
));
$count = 0;
$cursor = $qb->execute();
$cursor = $qb->executeQuery();
while ($data = $cursor->fetch()) {
if ($this->shareProvider->isAccessibleResult($data)) {
$count++;

View File

@@ -47,34 +47,22 @@ use OCP\Comments\ICommentsManager;
use OCP\Comments\NotFoundException as CommentNotFoundException;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IUserManager;
use OCP\Server;
class BoardImportService {
/** @var IUserManager */
private $userManager;
/** @var BoardMapper */
private $boardMapper;
/** @var AclMapper */
private $aclMapper;
/** @var LabelMapper */
private $labelMapper;
/** @var StackMapper */
private $stackMapper;
/** @var CardMapper */
private $cardMapper;
/** @var AssignmentMapper */
private $assignmentMapper;
/** @var AttachmentMapper */
private $attachmentMapper;
/** @var ICommentsManager */
private $commentsManager;
/** @var IEventDispatcher */
private $eventDispatcher;
/** @var string */
private $system = '';
/** @var null|ABoardImportService */
private $systemInstance;
/** @var array */
private $allowedSystems = [];
private IUserManager $userManager;
private BoardMapper $boardMapper;
private AclMapper $aclMapper;
private LabelMapper $labelMapper;
private StackMapper $stackMapper;
private CardMapper $cardMapper;
private AssignmentMapper $assignmentMapper;
private AttachmentMapper $attachmentMapper;
private ICommentsManager $commentsManager;
private IEventDispatcher $eventDispatcher;
private string $system = '';
private ?ABoardImportService $systemInstance;
private array $allowedSystems = [];
/**
* Data object created from config JSON
*
@@ -89,10 +77,7 @@ class BoardImportService {
* @psalm-suppress PropertyNotSetInConstructor
*/
private $data;
/**
* @var Board
*/
private $board;
private Board $board;
public function __construct(
IUserManager $userManager,
@@ -198,7 +183,7 @@ class BoardImportService {
}
if (!is_object($this->systemInstance)) {
$systemClass = 'OCA\\Deck\\Service\\Importer\\Systems\\' . ucfirst($this->getSystem()) . 'Service';
$this->systemInstance = \OC::$server->get($systemClass);
$this->systemInstance = Server::get($systemClass);
$this->systemInstance->setImportService($this);
}
return $this->systemInstance;
@@ -343,7 +328,7 @@ class BoardImportService {
}
public function insertAttachment(Attachment $attachment, string $content): Attachment {
$service = \OC::$server->get(FileService::class);
$service = Server::get(FileService::class);
$folder = $service->getFolder($attachment);
if ($folder->fileExists($attachment->getData())) {

View File

@@ -91,12 +91,10 @@ class LabelService {
$this->permissionService->checkPermission(null, $boardId, Acl::PERMISSION_MANAGE);
$boardLabels = $this->labelMapper->findAll($boardId);
if (\is_array($boardLabels)) {
foreach ($boardLabels as $boardLabel) {
if ($boardLabel->getTitle() === $title) {
throw new BadRequestException('title must be unique');
break;
}
foreach ($boardLabels as $boardLabel) {
if ($boardLabel->getTitle() === $title) {
throw new BadRequestException('title must be unique');
break;
}
}
@@ -151,15 +149,13 @@ class LabelService {
$label = $this->find($id);
$boardLabels = $this->labelMapper->findAll($label->getBoardId());
if (\is_array($boardLabels)) {
foreach ($boardLabels as $boardLabel) {
if ($boardLabel->getId() === $label->getId()) {
continue;
}
if ($boardLabel->getTitle() === $title) {
throw new BadRequestException('title must be unique');
break;
}
foreach ($boardLabels as $boardLabel) {
if ($boardLabel->getId() === $label->getId()) {
continue;
}
if ($boardLabel->getTitle() === $title) {
throw new BadRequestException('title must be unique');
break;
}
}

View File

@@ -30,31 +30,20 @@ namespace OCA\Deck\Service;
use OCA\Deck\Db\AssignmentMapper;
use OCA\Deck\Db\Card;
use OCA\Deck\Db\CardMapper;
use OCA\Deck\Model\CardDetails;
use OCP\Comments\ICommentsManager;
use OCP\IGroupManager;
use OCA\Deck\Db\Board;
use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\LabelMapper;
use OCP\IUserManager;
class OverviewService {
/** @var BoardMapper */
private $boardMapper;
/** @var LabelMapper */
private $labelMapper;
/** @var CardMapper */
private $cardMapper;
/** @var AssignmentMapper */
private $assignedUsersMapper;
/** @var IUserManager */
private $userManager;
/** @var IGroupManager */
private $groupManager;
/** @var ICommentsManager */
private $commentsManager;
/** @var AttachmentService */
private $attachmentService;
private BoardMapper $boardMapper;
private LabelMapper $labelMapper;
private CardMapper $cardMapper;
private AssignmentMapper $assignedUsersMapper;
private IUserManager $userManager;
private ICommentsManager $commentsManager;
private AttachmentService $attachmentService;
public function __construct(
BoardMapper $boardMapper,
@@ -62,7 +51,6 @@ class OverviewService {
CardMapper $cardMapper,
AssignmentMapper $assignedUsersMapper,
IUserManager $userManager,
IGroupManager $groupManager,
ICommentsManager $commentsManager,
AttachmentService $attachmentService
) {
@@ -71,7 +59,6 @@ class OverviewService {
$this->cardMapper = $cardMapper;
$this->assignedUsersMapper = $assignedUsersMapper;
$this->userManager = $userManager;
$this->groupManager = $groupManager;
$this->commentsManager = $commentsManager;
$this->attachmentService = $attachmentService;
}
@@ -93,62 +80,37 @@ class OverviewService {
}
public function findAllWithDue(string $userId): array {
$userBoards = $this->findAllBoardsFromUser($userId);
$userBoards = $this->boardMapper->findAllForUser($userId);
$allDueCards = [];
foreach ($userBoards as $userBoard) {
$service = $this;
$allDueCards[] = array_map(static function ($card) use ($service, $userBoard, $userId) {
$service->enrich($card, $userId);
$cardData = $card->jsonSerialize();
$cardData['boardId'] = $userBoard->getId();
return $cardData;
$allDueCards[] = array_map(function ($card) use ($userBoard, $userId) {
$this->enrich($card, $userId);
return (new CardDetails($card, $userBoard))->jsonSerialize();
}, $this->cardMapper->findAllWithDue($userBoard->getId()));
}
return $allDueCards;
return array_merge(...$allDueCards);
}
public function findUpcomingCards(string $userId): array {
$userBoards = $this->findAllBoardsFromUser($userId);
$findCards = [];
$userBoards = $this->boardMapper->findAllForUser($userId);
$foundCards = [];
foreach ($userBoards as $userBoard) {
$service = $this;
if (count($userBoard->getAcl()) === 0) {
// private board: get cards with due date
$findCards[] = array_map(static function ($card) use ($service, $userBoard, $userId) {
$service->enrich($card, $userId);
$cardData = $card->jsonSerialize();
$cardData['boardId'] = $userBoard->getId();
return $cardData;
}, $this->cardMapper->findAllWithDue($userBoard->getId()));
$cards = $this->cardMapper->findAllWithDue($userBoard->getId());
} else {
// shared board: get all my assigned or unassigned cards
$findCards[] = array_map(static function ($card) use ($service, $userBoard, $userId) {
$service->enrich($card, $userId);
$cardData = $card->jsonSerialize();
$cardData['boardId'] = $userBoard->getId();
return $cardData;
}, $this->cardMapper->findToMeOrNotAssignedCards($userBoard->getId(), $userId));
$cards = $this->cardMapper->findToMeOrNotAssignedCards($userBoard->getId(), $userId);
}
$foundCards[] = array_map(
function (Card $card) use ($userBoard, $userId) {
$this->enrich($card, $userId);
return (new CardDetails($card, $userBoard))->jsonSerialize();
},
$cards
);
}
return $findCards;
}
// FIXME: This is duplicate code with the board service
private function findAllBoardsFromUser(string $userId): array {
$userInfo = $this->getBoardPrerequisites($userId);
$userBoards = $this->boardMapper->findAllByUser($userInfo['user'], null, null);
$groupBoards = $this->boardMapper->findAllByGroups($userInfo['user'], $userInfo['groups'], null, null);
$circleBoards = $this->boardMapper->findAllByCircles($userInfo['user'], null, null);
return array_unique(array_merge($userBoards, $groupBoards, $circleBoards));
}
private function getBoardPrerequisites($userId): array {
$user = $this->userManager->get($userId);
$groups = $user !== null ? $this->groupManager->getUserGroupIds($user) : [];
return [
'user' => $userId,
'groups' => $groups
];
return array_merge(...$foundCards);
}
}

View File

@@ -23,7 +23,7 @@
namespace OCA\Deck\Service;
use OC\Cache\CappedMemoryCache;
use OCP\Cache\CappedMemoryCache;
use OCA\Circles\Model\Member;
use OCA\Deck\Db\Acl;
use OCA\Deck\Db\AclMapper;
@@ -63,8 +63,8 @@ class PermissionService {
/** @var array */
private $users = [];
private $boardCache;
private $permissionCache;
private CappedMemoryCache $boardCache;
private CappedMemoryCache $permissionCache;
public function __construct(
ILogger $logger,

View File

@@ -30,28 +30,32 @@ use OCA\Deck\BadRequestException;
use OCA\Deck\Db\Acl;
use OCA\Deck\Db\AssignmentMapper;
use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\Card;
use OCA\Deck\Db\CardMapper;
use OCA\Deck\Db\ChangeHelper;
use OCA\Deck\Db\LabelMapper;
use OCA\Deck\Db\Stack;
use OCA\Deck\Db\StackMapper;
use OCA\Deck\Model\CardDetails;
use OCA\Deck\NoPermissionException;
use OCA\Deck\StatusException;
use OCA\Deck\Validators\StackServiceValidator;
use Psr\Log\LoggerInterface;
class StackService {
private $stackMapper;
private $cardMapper;
private $boardMapper;
private $labelMapper;
private $permissionService;
private $boardService;
private $cardService;
private $assignedUsersMapper;
private $attachmentService;
private $activityManager;
private $changeHelper;
private $stackServiceValidator;
private StackMapper $stackMapper;
private CardMapper $cardMapper;
private BoardMapper $boardMapper;
private LabelMapper $labelMapper;
private PermissionService $permissionService;
private BoardService $boardService;
private CardService $cardService;
private AssignmentMapper $assignedUsersMapper;
private AttachmentService $attachmentService;
private ActivityManager $activityManager;
private ChangeHelper $changeHelper;
private LoggerInterface $logger;
private StackServiceValidator $stackServiceValidator;
public function __construct(
StackMapper $stackMapper,
@@ -64,8 +68,9 @@ class StackService {
AssignmentMapper $assignedUsersMapper,
AttachmentService $attachmentService,
ActivityManager $activityManager,
StackServiceValidator $stackServiceValidator,
ChangeHelper $changeHelper
ChangeHelper $changeHelper,
LoggerInterface $logger,
StackServiceValidator $stackServiceValidator
) {
$this->stackMapper = $stackMapper;
$this->boardMapper = $boardMapper;
@@ -78,6 +83,7 @@ class StackService {
$this->attachmentService = $attachmentService;
$this->activityManager = $activityManager;
$this->changeHelper = $changeHelper;
$this->logger = $logger;
$this->stackServiceValidator = $stackServiceValidator;
}
@@ -88,9 +94,13 @@ class StackService {
return;
}
foreach ($cards as $card) {
$this->cardService->enrich($card);
}
$cards = array_map(
function (Card $card): CardDetails {
$this->cardService->enrich($card);
return new CardDetails($card);
},
$cards
);
$stack->setCards($cards);
}
@@ -116,12 +126,18 @@ class StackService {
$this->permissionService->checkPermission($this->stackMapper, $stackId, Acl::PERMISSION_READ);
$stack = $this->stackMapper->find($stackId);
$cards = $this->cardMapper->findAll($stackId);
foreach ($cards as $cardIndex => $card) {
$assignedUsers = $this->assignedUsersMapper->findAll($card->getId());
$card->setAssignedUsers($assignedUsers);
$card->setAttachmentCount($this->attachmentService->count($card->getId()));
}
$cards = array_map(
function (Card $card): CardDetails {
$assignedUsers = $this->assignedUsersMapper->findAll($card->getId());
$card->setAssignedUsers($assignedUsers);
$card->setAttachmentCount($this->attachmentService->count($card->getId()));
return new CardDetails($card);
},
$this->cardMapper->findAll($stackId)
);
$stack->setCards($cards);
return $stack;
@@ -150,7 +166,7 @@ class StackService {
try {
$this->permissionService->checkPermission(null, $boardId, Acl::PERMISSION_READ);
} catch (NoPermissionException $e) {
\OC::$server->getLogger()->error('Unable to check permission for a previously obtained board ' . $boardId, ['exception' => $e]);
$this->logger->error('Unable to check permission for a previously obtained board ' . $boardId, ['exception' => $e]);
return [];
}
return $this->stackMapper->findAll($boardId);
@@ -310,6 +326,7 @@ class StackService {
$this->permissionService->checkPermission($this->stackMapper, $id, Acl::PERMISSION_MANAGE);
$stackToSort = $this->stackMapper->find($id);
$stacks = $this->stackMapper->findAll($stackToSort->getBoardId());
usort($stacks, static fn (Stack $stackA, Stack $stackB) => $stackA->getOrder() - $stackB->getOrder());
$result = [];
$i = 0;
foreach ($stacks as $stack) {

View File

@@ -65,22 +65,16 @@ class DeckShareProvider implements \OCP\Share\IShareProvider {
public const SHARE_TYPE_DECK_USER = IShare::TYPE_DECK_USER;
/** @var IDBConnection */
private $dbConnection;
/** @var IManager */
private $shareManager;
/** @var AttachmentCacheHelper */
private $attachmentCacheHelper;
/** @var BoardMapper */
private $boardMapper;
/** @var CardMapper */
private $cardMapper;
/** @var PermissionService */
private $permissionService;
/** @var ITimeFactory */
private $timeFactory;
/** @var IL10N */
private $l;
private IDBConnection $dbConnection;
private IManager $shareManager;
private AttachmentCacheHelper $attachmentCacheHelper;
private BoardMapper $boardMapper;
private CardMapper $cardMapper;
private PermissionService $permissionService;
private ITimeFactory $timeFactory;
private IL10N $l;
private IMimeTypeLoader $mimeTypeLoader;
private ?string $userId;
public function __construct(
IDBConnection $connection,
@@ -89,7 +83,10 @@ class DeckShareProvider implements \OCP\Share\IShareProvider {
CardMapper $cardMapper,
PermissionService $permissionService,
AttachmentCacheHelper $attachmentCacheHelper,
IL10N $l
IL10N $l,
ITimeFactory $timeFactory,
IMimeTypeLoader $mimeTypeLoader,
?string $userId
) {
$this->dbConnection = $connection;
$this->shareManager = $shareManager;
@@ -97,9 +94,10 @@ class DeckShareProvider implements \OCP\Share\IShareProvider {
$this->cardMapper = $cardMapper;
$this->attachmentCacheHelper = $attachmentCacheHelper;
$this->permissionService = $permissionService;
$this->l = $l;
$this->timeFactory = \OC::$server->get(ITimeFactory::class);
$this->timeFactory = $timeFactory;
$this->mimeTypeLoader = $mimeTypeLoader;
$this->userId = $userId;
}
public static function register(IEventDispatcher $dispatcher): void {
@@ -207,13 +205,13 @@ class DeckShareProvider implements \OCP\Share\IShareProvider {
->setValue('file_target', $qb->createNamedParameter($target))
->setValue('permissions', $qb->createNamedParameter($permissions))
->setValue('token', $qb->createNamedParameter($token))
->setValue('stime', $qb->createNamedParameter(\OC::$server->get(ITimeFactory::class)->getTime()));
->setValue('stime', $qb->createNamedParameter($this->timeFactory->getTime()));
if ($expirationDate !== null) {
$qb->setValue('expiration', $qb->createNamedParameter($expirationDate, 'datetime'));
}
$qb->execute();
$qb->executeStatement();
return $qb->getLastInsertId();
}
@@ -281,7 +279,7 @@ class DeckShareProvider implements \OCP\Share\IShareProvider {
$entryData = $data;
$entryData['permissions'] = $entryData['f_permissions'];
$entryData['parent'] = $entryData['f_parent'];
$share->setNodeCacheEntry(Cache::cacheEntryFromData($entryData, \OC::$server->get(IMimeTypeLoader::class)));
$share->setNodeCacheEntry(Cache::cacheEntryFromData($entryData, $this->mimeTypeLoader));
}
return $share;
}
@@ -474,14 +472,14 @@ class DeckShareProvider implements \OCP\Share\IShareProvider {
'file_target' => $qb->createNamedParameter($share->getTarget()),
'permissions' => $qb->createNamedParameter($share->getPermissions()),
'stime' => $qb->createNamedParameter($share->getShareTime()->getTimestamp()),
])->execute();
])->executeStatement();
} else {
// Already a userroom share. Update it.
$qb = $this->dbConnection->getQueryBuilder();
$qb->update('share')
->set('file_target', $qb->createNamedParameter($share->getTarget()))
->where($qb->expr()->eq('id', $qb->createNamedParameter($data['id'])))
->execute();
->executeStatement();
}
return $share;
@@ -491,7 +489,7 @@ class DeckShareProvider implements \OCP\Share\IShareProvider {
* @inheritDoc
* @returns
*/
public function getSharesInFolder($userId, Folder $node, $reshares) {
public function getSharesInFolder($userId, Folder $node, $reshares, $shallow = true) {
$qb = $this->dbConnection->getQueryBuilder();
$qb->select('*')
->from('share', 's')
@@ -518,7 +516,11 @@ class DeckShareProvider implements \OCP\Share\IShareProvider {
}
$qb->innerJoin('s', 'filecache', 'f', $qb->expr()->eq('s.file_source', 'f.fileid'));
$qb->andWhere($qb->expr()->eq('f.parent', $qb->createNamedParameter($node->getId())));
if ($shallow) {
$qb->andWhere($qb->expr()->eq('f.parent', $qb->createNamedParameter($node->getId())));
} else {
$qb->andWhere($qb->expr()->like('f.path', $qb->createNamedParameter($this->dbConnection->escapeLikeParameter($node->getInternalPath()) . '/%')));
}
$qb->orderBy('s.id');
@@ -632,8 +634,8 @@ class DeckShareProvider implements \OCP\Share\IShareProvider {
$start = 0;
while (true) {
/** @var IShare[] $shareSlice */
$shareSlice = array_slice($shares, $start, 100);
$start += 100;
$shareSlice = array_slice($shares, $start, 1000);
$start += 1000;
if ($shareSlice === []) {
break;
@@ -712,15 +714,15 @@ class DeckShareProvider implements \OCP\Share\IShareProvider {
* @return IShare[]
*/
public function getSharedWith($userId, $shareType, $node, $limit, $offset): array {
$allBoards = $this->boardMapper->findAllForUser($userId);
$allBoards = $this->boardMapper->findBoardIds($userId);
/** @var IShare[] $shares */
$shares = [];
$start = 0;
while (true) {
$boards = array_slice($allBoards, $start, 100);
$start += 100;
$boards = array_slice($allBoards, $start, 1000);
$start += 1000;
if ($boards === []) {
break;
@@ -750,10 +752,6 @@ class DeckShareProvider implements \OCP\Share\IShareProvider {
$qb->andWhere($qb->expr()->eq('s.file_source', $qb->createNamedParameter($node->getId())));
}
$boards = array_map(function (Board $board) {
return $board->getId();
}, $boards);
$qb->andWhere($qb->expr()->eq('s.share_type', $qb->createNamedParameter(IShare::TYPE_DECK)))
->andWhere($qb->expr()->in('db.id', $qb->createNamedParameter(
$boards,
@@ -821,7 +819,7 @@ class DeckShareProvider implements \OCP\Share\IShareProvider {
$qb->expr()->eq('s.item_type', $qb->createNamedParameter('folder'))
));
$cursor = $qb->execute();
$cursor = $qb->executeQuery();
while ($data = $cursor->fetch()) {
if (!$this->isAccessibleResult($data)) {
continue;
@@ -836,9 +834,7 @@ class DeckShareProvider implements \OCP\Share\IShareProvider {
}
$cursor->closeCursor();
$shares = $this->resolveSharesForRecipient($shares, \OC::$server->getUserSession()->getUser()->getUID());
return $shares;
return $this->resolveSharesForRecipient($shares, $this->userId);
}
public function isAccessibleResult(array $data): bool {
@@ -941,7 +937,7 @@ class DeckShareProvider implements \OCP\Share\IShareProvider {
$qb->expr()->eq('item_type', $qb->createNamedParameter('file')),
$qb->expr()->eq('item_type', $qb->createNamedParameter('folder'))
));
$cursor = $qb->execute();
$cursor = $qb->executeQuery();
$users = [];
while ($row = $cursor->fetch()) {

View File

@@ -29,14 +29,13 @@ namespace OCA\Deck\Sharing;
use OC\Files\Filesystem;
use OCA\Deck\Service\ConfigService;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Server;
use OCP\Share\Events\VerifyMountPointEvent;
use OCP\Share\IShare;
use Symfony\Component\EventDispatcher\GenericEvent;
class Listener {
/** @var ConfigService */
private $configService;
private ConfigService $configService;
public function __construct(ConfigService $configService) {
$this->configService = $configService;
@@ -52,13 +51,13 @@ class Listener {
public static function listenPreShare(GenericEvent $event): void {
/** @var self $listener */
$listener = \OC::$server->query(self::class);
$listener = Server::get(self::class);
$listener->overwriteShareTarget($event);
}
public static function listenVerifyMountPointEvent(VerifyMountPointEvent $event): void {
/** @var self $listener */
$listener = \OC::$server->query(self::class);
$listener = Server::get(self::class);
$listener->overwriteMountPoint($event);
}

14173
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.7.4",
"version": "1.8.5",
"authors": [
{
"name": "Julius Härtl",
@@ -20,6 +20,7 @@
"build": "NODE_ENV=production webpack --progress --config webpack.js",
"dev": "NODE_ENV=development webpack --progress --config webpack.js",
"watch": "NODE_ENV=development webpack --progress --watch --config webpack.js",
"serve": "webpack serve --node-env development --allowed-hosts all --config webpack.js",
"lint": "eslint --ext .js,.vue src",
"lint:fix": "eslint --ext .js,.vue src --fix",
"stylelint": "stylelint src",
@@ -29,35 +30,37 @@
},
"dependencies": {
"@babel/polyfill": "^7.12.1",
"@babel/runtime": "^7.17.9",
"@babel/runtime": "^7.19.0",
"@juliushaertl/vue-richtext": "^1.0.1",
"@nextcloud/auth": "^1.3.0",
"@nextcloud/axios": "^1.9.0",
"@nextcloud/dialogs": "^3.1.2",
"@nextcloud/event-bus": "^2.1.1",
"@nextcloud/auth": "^2.0.0",
"@nextcloud/axios": "^2.0.0",
"@nextcloud/dialogs": "^3.2.0",
"@nextcloud/event-bus": "^3.0.2",
"@nextcloud/files": "^2.1.0",
"@nextcloud/initial-state": "^1.2.1",
"@nextcloud/l10n": "^1.4.1",
"@nextcloud/moment": "^1.2.0",
"@nextcloud/initial-state": "^2.0.0",
"@nextcloud/l10n": "^1.6.0",
"@nextcloud/moment": "^1.2.1",
"@nextcloud/router": "^2.0.0",
"@nextcloud/vue": "^5.3.1",
"@nextcloud/vue": "^7.3.0",
"@nextcloud/vue-dashboard": "^2.0.1",
"@nextcloud/vue-richtext": "^2.0.1",
"blueimp-md5": "^2.19.0",
"dompurify": "^2.3.6",
"dompurify": "^2.4.0",
"lodash": "^4.17.21",
"markdown-it": "^12.3.2",
"markdown-it-link-attributes": "^4.0.0",
"markdown-it": "^13.0.1",
"markdown-it-link-attributes": "^4.0.1",
"markdown-it-task-checkbox": "^1.0.6",
"moment": "^2.29.2",
"nextcloud-vue-collections": "^0.9.0",
"p-queue": "^6.6.2",
"moment": "^2.29.4",
"nextcloud-vue-collections": "^0.10.0",
"p-queue": "^7.3.0",
"url-search-params-polyfill": "^8.1.1",
"vue": "^2.6.14",
"vue-at": "^2.5.0-beta.2",
"vue": "^2.7.9",
"vue-at": "^2.5.0",
"vue-click-outside": "^1.1.0",
"vue-easymde": "^2.0.0",
"vue-infinite-loading": "^2.4.5",
"vue-router": "^3.5.3",
"vue-material-design-icons": "^5.1.2",
"vue-router": "^3.6.5",
"vue-smooth-dnd": "^0.8.1",
"vuex": "^3.6.2",
"vuex-router-sync": "^5.0.0"
@@ -66,20 +69,24 @@
"extends @nextcloud/browserslist-config"
],
"engines": {
"node": "^14.0.0",
"npm": "^7.0.0"
"node": "^16.0.0",
"npm": "^7.0.0 || ^8.0.0"
},
"devDependencies": {
"@nextcloud/babel-config": "^1.0.0",
"@nextcloud/browserslist-config": "^2.2.0",
"@nextcloud/eslint-config": "^6.1.2",
"@nextcloud/stylelint-config": "^2.1.2",
"@nextcloud/webpack-vue-config": "^5.0.0",
"@relative-ci/agent": "^3.1.2",
"@nextcloud/browserslist-config": "^2.3.0",
"@nextcloud/eslint-config": "^8.0.0",
"@nextcloud/stylelint-config": "^2.2.0",
"@nextcloud/webpack-vue-config": "^5.3.0",
"@relative-ci/agent": "^4.1.0",
"@vue/test-utils": "^1.3.0",
"jest": "^27.5.1",
"cypress": "^10.8.0",
"eslint-webpack-plugin": "^3.2.0",
"jest": "^29.0.1",
"jest-serializer-vue": "^2.0.2",
"vue-jest": "^3.0.7"
"stylelint-webpack-plugin": "^3.3.0",
"vue-jest": "^3.0.7",
"vue-template-compiler": "^2.7.9"
},
"jest": {
"moduleFileExtensions": [

View File

@@ -7,6 +7,9 @@
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
errorBaseline="tests/psalm-baseline.xml"
>
<stubs>
<file name="tests/stub.phpstub" preloadClasses="true"/>
</stubs>
<projectFiles>
<directory name="lib" />
<ignoreFiles>

View File

@@ -21,14 +21,13 @@
-->
<template>
<Content id="content" app-name="deck" :class="{ 'nav-hidden': !navShown, 'sidebar-hidden': !sidebarRouterView }">
<NcContent app-name="deck" :class="{ 'nav-hidden': !navShown, 'sidebar-hidden': !sidebarRouterView }">
<AppNavigation />
<AppContent>
<NcAppContent>
<router-view />
</AppContent>
</NcAppContent>
<Modal
v-if="cardDetailsInModal && $route.params.cardId"
<NcModal v-if="cardDetailsInModal && $route.params.cardId"
:clear-view-delay="0"
:title="t('deck', 'Card details')"
size="large"
@@ -36,18 +35,17 @@
<div class="modal__content modal__card">
<router-view name="sidebar" />
</div>
</Modal>
</NcModal>
<router-view name="sidebar" :visible="!cardDetailsInModal || !$route.params.cardId" />
</Content>
</NcContent>
</template>
<script>
import { mapState } from 'vuex'
import AppNavigation from './components/navigation/AppNavigation'
import { Modal, Content, AppContent } from '@nextcloud/vue'
import { BoardApi } from './services/BoardApi'
import AppNavigation from './components/navigation/AppNavigation.vue'
import { NcModal, NcContent, NcAppContent } from '@nextcloud/vue'
import { BoardApi } from './services/BoardApi.js'
import { emit, subscribe } from '@nextcloud/event-bus'
const boardApi = new BoardApi()
@@ -56,9 +54,9 @@ export default {
name: 'App',
components: {
AppNavigation,
Modal,
Content,
AppContent,
NcModal,
NcContent,
NcAppContent,
},
provide() {
return {
@@ -130,7 +128,7 @@ export default {
<style lang="scss" scoped>
#content {
#content-vue {
#app-content {
transition: margin-left 100ms ease;
position: relative;
@@ -158,6 +156,37 @@ export default {
</style>
<style lang="scss">
@import '../css/print';
.icon-activity {
background-image: url(../img/activity-dark.svg);
body[data-theme-dark] & {
background-image: url(../img/activity.svg);
}
}
.avatardiv.circles {
background: var(--color-primary);
}
.icon-circles {
background-image: url(../img/circles-dark.svg);
opacity: 1;
background-size: 20px;
background-position: center center;
}
.icon-circles-white, .icon-circles.icon-white {
background-image: url(../img/circles.svg);
opacity: 1;
background-size: 20px;
background-position: center center;
}
.icon-colorpicker {
background-image: url('../img/color_picker.svg');
}
.multiselect {
width: 100%;

View File

@@ -21,7 +21,7 @@
-->
<template>
<Modal @close="close">
<NcModal @close="close">
<div id="modal-inner" :class="{ 'icon-loading': loading }">
<h1>{{ t('deck', 'Select the board to link to a project') }}</h1>
<input v-model="filter" type="text" :placeholder="t('deck', 'Search by board title')">
@@ -38,17 +38,17 @@
{{ t('deck', 'Select board') }}
</button>
</div>
</Modal>
</NcModal>
</template>
<script>
import Modal from '@nextcloud/vue/dist/Components/Modal'
import { NcModal } from '@nextcloud/vue'
import axios from '@nextcloud/axios'
import { generateUrl } from '@nextcloud/router'
export default {
name: 'BoardSelector',
components: {
Modal,
NcModal,
},
data() {
return {

View File

@@ -21,11 +21,11 @@
-->
<template>
<Modal class="card-selector" @close="close">
<NcModal class="card-selector" @close="close">
<div class="modal-scroller">
<div v-if="!creating && !created" id="modal-inner" :class="{ 'icon-loading': loading }">
<h3>{{ t('deck', 'Create a new card') }}</h3>
<Multiselect v-model="selectedBoard"
<NcMultiselect v-model="selectedBoard"
:placeholder="t('deck', 'Select a board')"
:options="boards"
:disabled="loading"
@@ -44,9 +44,9 @@
<span>{{ props.option.title }}</span>
</span>
</template>
</Multiselect>
</NcMultiselect>
<Multiselect v-model="selectedStack"
<NcMultiselect v-model="selectedStack"
:placeholder="t('deck', 'Select a list')"
:options="stacksFromBoard"
:max-height="100"
@@ -71,12 +71,22 @@
</div>
</div>
<div v-else id="modal-inner">
<EmptyContent v-if="creating" icon="icon-loading">
{{ t('deck', 'Creating the new card ') }}
</EmptyContent>
<EmptyContent v-else-if="created" icon="icon-checkmark">
{{ t('deck', 'Card "{card}" was added to "{board}"', { card: pendingTitle, board: selectedBoard.title }) }}
<template #desc>
<NcEmptyContent v-if="creating">
<template #icon>
<NcLoadingIcon />
</template>
<template #title>
{{ t('deck', 'Creating the new card …') }}
</template>
</NcEmptyContent>
<NcEmptyContent v-else-if="created">
<template #icon>
<CardPlusOutline />
</template>
<template #title>
{{ t('deck', 'Card "{card}" was added to "{board}"', { card: pendingTitle, board: selectedBoard.title }) }}
</template>
<template #action>
<button class="primary" @click="openNewCard">
{{ t('deck', 'Open card') }}
</button>
@@ -84,28 +94,29 @@
{{ t('deck', 'Close') }}
</button>
</template>
</EmptyContent>
</NcEmptyContent>
</div>
</div>
</Modal>
</NcModal>
</template>
<script>
import { generateUrl } from '@nextcloud/router'
import Modal from '@nextcloud/vue/dist/Components/Modal'
import Multiselect from '@nextcloud/vue/dist/Components/Multiselect'
import EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent'
import { NcModal, NcMultiselect, NcEmptyContent, NcLoadingIcon } from '@nextcloud/vue'
import CardPlusOutline from 'vue-material-design-icons/CardPlusOutline.vue'
import axios from '@nextcloud/axios'
import { CardApi } from './services/CardApi'
import { CardApi } from './services/CardApi.js'
const cardApi = new CardApi()
export default {
name: 'CardCreateDialog',
components: {
EmptyContent,
Modal,
Multiselect,
NcEmptyContent,
NcModal,
NcMultiselect,
NcLoadingIcon,
CardPlusOutline,
},
props: {
title: {
@@ -205,6 +216,7 @@ export default {
max-width: 400px;
padding: 10px;
min-height: 200px;
margin: auto;
}
.multiselect-board, .multiselect-list, input, textarea {

View File

@@ -21,10 +21,10 @@
-->
<template>
<Modal class="card-selector" @close="close">
<NcModal class="card-selector" @close="close">
<div id="modal-inner" :class="{ 'icon-loading': loading }">
<h3>{{ title }}</h3>
<Multiselect v-model="selectedBoard"
<NcMultiselect v-model="selectedBoard"
:placeholder="t('deck', 'Select a board')"
:options="boards"
:disabled="loading"
@@ -42,9 +42,9 @@
<span>{{ props.option.title }}</span>
</span>
</template>
</Multiselect>
</NcMultiselect>
<Multiselect v-model="selectedCard"
<NcMultiselect v-model="selectedCard"
:placeholder="t('deck', 'Select a card')"
:options="cardsFromBoard"
:disabled="loading || selectedBoard === ''"
@@ -57,20 +57,19 @@
{{ t('deck', 'Cancel') }}
</button>
</div>
</Modal>
</NcModal>
</template>
<script>
import { generateUrl } from '@nextcloud/router'
import Modal from '@nextcloud/vue/dist/Components/Modal'
import Multiselect from '@nextcloud/vue/dist/Components/Multiselect'
import { NcModal, NcMultiselect } from '@nextcloud/vue'
import axios from '@nextcloud/axios'
export default {
name: 'CardSelector',
components: {
Modal,
Multiselect,
NcModal,
NcMultiselect,
},
props: {
title: {

View File

@@ -36,10 +36,10 @@
<script>
import RichText from '@juliushaertl/vue-richtext'
import { UserBubble } from '@nextcloud/vue'
import { NcUserBubble } from '@nextcloud/vue'
import moment from '@nextcloud/moment'
import DOMPurify from 'dompurify'
import relativeDate from '../mixins/relativeDate'
import relativeDate from '../mixins/relativeDate.js'
const InternalLink = {
name: 'InternalLink',
@@ -93,7 +93,7 @@ export default {
break
case 'user':
parameters[key] = {
component: UserBubble,
component: NcUserBubble,
props: {
user: parameters[key].id,
displayName: parameters[key].name,

View File

@@ -37,7 +37,7 @@
<script>
import axios from '@nextcloud/axios'
import { generateOcsUrl } from '@nextcloud/router'
import ActivityEntry from './ActivityEntry'
import ActivityEntry from './ActivityEntry.vue'
import InfiniteLoading from 'vue-infinite-loading'
const ACTIVITY_FETCH_LIMIT = 50

View File

@@ -27,24 +27,21 @@
@drop.prevent="handleDropFiles">
<slot />
<transition name="fade" mode="out-in">
<div
v-show="isDraggingOver"
<div v-show="isDraggingOver"
class="dragover">
<div class="drop-hint">
<div
class="drop-hint__icon"
<div class="drop-hint__icon"
:class="{
'icon-upload' : !isReadOnly,
'icon-error' : isReadOnly}" />
<h2
class="drop-hint__text">
<h2 class="drop-hint__text">
{{ dropHintText }}
</h2>
</div>
</div>
</transition>
<Modal v-if="modalShow" :title="t('deck', 'File already exists')" @close="modalShow=false">
<NcModal v-if="modalShow" :title="t('deck', 'File already exists')" @close="modalShow=false">
<div class="modal__content">
<h2>{{ t('deck', 'File already exists') }}</h2>
<p>
@@ -60,13 +57,13 @@
{{ t('deck', 'Keep existing file') }}
</button>
</div>
</Modal>
</NcModal>
</div>
</template>
<script>
import { Modal } from '@nextcloud/vue'
import attachmentUpload from '../mixins/attachmentUpload'
import { NcModal } from '@nextcloud/vue'
import attachmentUpload from '../mixins/attachmentUpload.js'
import { loadState } from '@nextcloud/initial-state'
let maxUploadSizeState
@@ -78,7 +75,7 @@ try {
export default {
name: 'AttachmentDragAndDrop',
components: { Modal },
components: { NcModal },
mixins: [attachmentUpload],
props: {
cardId: {

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