Compare commits

..

607 Commits

Author SHA1 Message Date
grnd-alt
ecd063bc89 Merge pull request #6042 from nextcloud/release/1.11.5
bump version to 1.11.5
2024-06-27 13:05:24 +02:00
grnd-alt
9614dc3b17 bump version to 1.11.5
Signed-off-by: grnd-alt <salimbelakkaf@outlook.de>
2024-06-27 12:01:54 +02:00
Nextcloud bot
f8251e9423 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-06-27 00:37:45 +00:00
Julius Härtl
d4c1f855cd Merge pull request #6036 from nextcloud/backport/6005/stable27
[stable27] don't reset update time when no update was written to db
2024-06-26 17:00:11 +02:00
grnd-alt
8032fe6964 don't reset update time when no update was written to db
Signed-off-by: grnd-alt <salimbelakkaf@outlook.de>
2024-06-26 08:31:59 +00:00
Nextcloud bot
36533a3952 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-06-23 00:37:39 +00:00
Nextcloud bot
48df7928bf Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-06-22 01:29:11 +00:00
Nextcloud bot
ae51a8bb02 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-06-17 00:36:21 +00:00
Nextcloud bot
3f1f834849 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-06-16 00:37:15 +00:00
Nextcloud bot
4390969143 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-06-15 00:36:43 +00:00
Nextcloud bot
f942d803d2 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-06-12 00:38:03 +00:00
Nextcloud bot
9e5584de89 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-06-11 00:36:41 +00:00
Julius Härtl
e4b38fdc96 Merge pull request #5985 from nextcloud/automated/noid/stable27-update-nextcloud-ocp 2024-06-10 13:15:29 +02:00
Nextcloud bot
e0c30deb12 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-06-10 00:37:17 +00:00
nextcloud-command
be224c64e9 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2024-06-09 02:49:00 +00:00
Nextcloud bot
6a3655ddfd Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-06-09 00:36:38 +00:00
dependabot[bot]
78b55d5f5d Merge pull request #5979 from nextcloud/dependabot/npm_and_yarn/stable27/babel/runtime-7.24.7 2024-06-08 02:11:25 +00:00
dependabot[bot]
c397d3e6ab Chore(deps): Bump @babel/runtime from 7.24.6 to 7.24.7
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.24.6 to 7.24.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.24.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>
2024-06-08 01:55:52 +00:00
Nextcloud bot
41eed1e637 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-06-08 00:36:55 +00:00
Nextcloud bot
f3b9b99152 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-06-06 00:47:37 +00:00
Julius Härtl
4821017b7c Merge pull request #5909 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/notify_push-1.3.0 2024-06-05 19:31:28 +02:00
Nextcloud bot
e24fddc61b Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-06-04 00:26:45 +00:00
Ferdinand Thiessen
7ec74261b4 Merge pull request #5959 from nextcloud/automated/noid/stable27-update-nextcloud-ocp
[stable27] Update nextcloud/ocp dependency
2024-06-04 00:51:56 +02:00
Nextcloud bot
c796f05241 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-06-03 00:26:54 +00:00
nextcloud-command
92b91f6108 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2024-06-02 02:39:26 +00:00
Nextcloud bot
66cb1933e3 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-06-02 00:26:41 +00:00
dependabot[bot]
2ee2191430 Merge pull request #5954 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/event-bus-3.3.1 2024-06-01 02:05:47 +00:00
dependabot[bot]
9aa84c7e07 Merge pull request #5956 from nextcloud/dependabot/npm_and_yarn/stable27/dompurify-3.1.5 2024-06-01 01:55:54 +00:00
dependabot[bot]
2ad25b034b Merge pull request #5955 from nextcloud/dependabot/npm_and_yarn/stable27/relative-ci/agent-4.2.8 2024-06-01 01:54:42 +00:00
dependabot[bot]
a7e8bd9055 Chore(deps): Bump dompurify from 3.1.4 to 3.1.5
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.1.4 to 3.1.5.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.1.4...3.1.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-01 01:47:59 +00:00
dependabot[bot]
a0fb2f7297 Chore(deps-dev): Bump @relative-ci/agent from 4.2.7 to 4.2.8
Bumps [@relative-ci/agent](https://github.com/relative-ci/agent) from 4.2.7 to 4.2.8.
- [Release notes](https://github.com/relative-ci/agent/releases)
- [Commits](https://github.com/relative-ci/agent/compare/v4.2.7...v4.2.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-01 01:47:48 +00:00
dependabot[bot]
30fb9ea528 Chore(deps): Bump @nextcloud/event-bus from 3.3.0 to 3.3.1
Bumps [@nextcloud/event-bus](https://github.com/nextcloud/nextcloud-event-bus) from 3.3.0 to 3.3.1.
- [Release notes](https://github.com/nextcloud/nextcloud-event-bus/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-event-bus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-event-bus/compare/v3.3.0...v3.3.1)

---
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>
2024-06-01 01:47:31 +00:00
Nextcloud bot
b9543981a5 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-06-01 00:26:47 +00:00
Nextcloud bot
9b95895965 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-05-31 00:26:56 +00:00
Nextcloud bot
902e806a6a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-05-30 00:28:09 +00:00
Nextcloud bot
da7d7deb65 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-05-29 00:27:08 +00:00
Nextcloud bot
f94c7f01e0 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-05-28 00:26:51 +00:00
Nextcloud bot
1afbf3436a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-05-27 00:27:02 +00:00
dependabot[bot]
b81c49bd38 Merge pull request #5912 from nextcloud/dependabot/npm_and_yarn/stable27/eslint-webpack-plugin-4.2.0 2024-05-25 01:27:02 +00:00
dependabot[bot]
b67a5cb7d7 Merge pull request #5910 from nextcloud/dependabot/npm_and_yarn/stable27/dompurify-3.1.4 2024-05-25 01:26:40 +00:00
dependabot[bot]
f47802b053 Merge pull request #5911 from nextcloud/dependabot/npm_and_yarn/stable27/babel/runtime-7.24.6 2024-05-25 01:16:23 +00:00
dependabot[bot]
dbfead42cc Chore(deps-dev): Bump eslint-webpack-plugin from 4.1.0 to 4.2.0
Bumps [eslint-webpack-plugin](https://github.com/webpack-contrib/eslint-webpack-plugin) from 4.1.0 to 4.2.0.
- [Release notes](https://github.com/webpack-contrib/eslint-webpack-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/eslint-webpack-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/eslint-webpack-plugin/compare/v4.1.0...v4.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-25 01:10:15 +00:00
dependabot[bot]
61d236cfb4 Chore(deps): Bump @babel/runtime from 7.24.5 to 7.24.6
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.24.5 to 7.24.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.24.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>
2024-05-25 01:10:07 +00:00
dependabot[bot]
17799a490b Chore(deps): Bump dompurify from 3.1.3 to 3.1.4
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.1.3 to 3.1.4.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.1.3...3.1.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-25 01:09:53 +00:00
dependabot[bot]
f7b691a8a3 Chore(deps): Bump @nextcloud/notify_push from 1.1.4 to 1.3.0
Bumps [@nextcloud/notify_push](https://github.com/icewind1991/notify_push-client) from 1.1.4 to 1.3.0.
- [Release notes](https://github.com/icewind1991/notify_push-client/releases)
- [Commits](https://github.com/icewind1991/notify_push-client/compare/v1.1.4...v1.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-25 01:09:44 +00:00
Nextcloud bot
d558a65383 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-05-25 00:27:41 +00:00
Arthur Schiwon
7abbe6c0b5 Merge pull request #5709 from nextcloud/backport/5703/stable27
[stable27] fix: Avoid conflicts on deck attachments folder name
2024-05-24 10:29:51 +02:00
Nextcloud bot
3830ee6d80 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-05-24 00:26:01 +00:00
Luka Trovic
4c432fea5a fix: update base query count
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2024-05-23 19:04:07 +02:00
Nextcloud bot
66d0883f0d Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-05-23 00:28:02 +00:00
Nextcloud bot
c82eff05b5 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-05-22 00:26:22 +00:00
Nextcloud bot
e3c0f7da21 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-05-21 00:29:07 +00:00
Luka Trovic
e38d93edf1 Merge pull request #5856 from nextcloud/backport/5745/stable27
[stable27] fix: permission check for cloning board
2024-05-20 13:56:20 +02:00
dependabot[bot]
dbd4058a0e Merge pull request #5902 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/babel-config-1.2.0 2024-05-18 02:46:58 +00:00
dependabot[bot]
2ae4cef580 Merge pull request #5900 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/event-bus-3.3.0 2024-05-18 02:42:15 +00:00
dependabot[bot]
322676d06f Merge pull request #5901 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/eslint-config-8.4.1 2024-05-18 02:30:36 +00:00
dependabot[bot]
fbc2e4830d Merge pull request #5899 from nextcloud/dependabot/npm_and_yarn/stable27/dompurify-3.1.3 2024-05-18 02:28:31 +00:00
dependabot[bot]
d1f588c668 Chore(deps-dev): Bump @nextcloud/babel-config from 1.1.1 to 1.2.0
Bumps [@nextcloud/babel-config](https://github.com/nextcloud/babel-config) from 1.1.1 to 1.2.0.
- [Release notes](https://github.com/nextcloud/babel-config/releases)
- [Commits](https://github.com/nextcloud/babel-config/compare/v1.1.1...v1.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-18 01:36:57 +00:00
dependabot[bot]
a78e566c8e Chore(deps-dev): Bump @nextcloud/eslint-config from 8.3.0 to 8.4.1
Bumps [@nextcloud/eslint-config](https://github.com/nextcloud-libraries/eslint-config) from 8.3.0 to 8.4.1.
- [Release notes](https://github.com/nextcloud-libraries/eslint-config/releases)
- [Changelog](https://github.com/nextcloud-libraries/eslint-config/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/eslint-config/compare/v8.3.0...v8.4.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-18 01:36:45 +00:00
dependabot[bot]
c18d7c8486 Chore(deps): Bump @nextcloud/event-bus from 3.2.0 to 3.3.0
Bumps [@nextcloud/event-bus](https://github.com/nextcloud/nextcloud-event-bus) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/nextcloud/nextcloud-event-bus/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-event-bus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-event-bus/compare/v3.2.0...v3.3.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>
2024-05-18 01:36:29 +00:00
dependabot[bot]
7eceacdca8 Chore(deps): Bump dompurify from 3.1.2 to 3.1.3
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.1.2...3.1.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-18 01:36:18 +00:00
Nextcloud bot
2c94b89447 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-05-18 00:27:05 +00:00
Luka Trovic
efb5f8e28d fix: permission check for cloning board
Signed-off-by: Luka Trovic <luka@nextcloud.com>

[skip ci]
2024-05-17 19:12:03 +02:00
Nextcloud bot
c2d014ef93 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-05-17 00:28:08 +00:00
Nextcloud bot
2fe2f824e0 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-05-16 00:28:10 +00:00
Nextcloud bot
69f7c2e623 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-05-15 00:27:54 +00:00
Julius Härtl
d5eeb5cd43 Merge pull request #5881 from nextcloud/automated/noid/stable27-update-nextcloud-ocp
[stable27] Update nextcloud/ocp dependency
2024-05-13 08:19:44 +02:00
Nextcloud bot
507e8b027f Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-05-13 00:29:04 +00:00
nextcloud-command
0ba3ae663a chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2024-05-12 02:36:55 +00:00
Nextcloud bot
0e991947a6 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-05-12 00:27:54 +00:00
Nextcloud bot
0c5e28664a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-05-11 00:27:42 +00:00
Nextcloud bot
69f6764d80 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-05-10 00:42:44 +00:00
dependabot[bot]
363b9d0a44 Merge pull request #5669 from nextcloud/dependabot/npm_and_yarn/stable27/eslint-webpack-plugin-4.1.0 2024-05-09 11:14:01 +00:00
dependabot[bot]
0429d0471c Chore(deps-dev): Bump eslint-webpack-plugin from 4.0.1 to 4.1.0
Bumps [eslint-webpack-plugin](https://github.com/webpack-contrib/eslint-webpack-plugin) from 4.0.1 to 4.1.0.
- [Release notes](https://github.com/webpack-contrib/eslint-webpack-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/eslint-webpack-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/eslint-webpack-plugin/compare/v4.0.1...v4.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-09 13:06:57 +02:00
Julius Härtl
24bef69476 Merge pull request #5842 from nextcloud/dependabot/npm_and_yarn/stable27/babel/runtime-7.24.5 2024-05-09 13:01:11 +02:00
dependabot[bot]
556e721471 Chore(deps): Bump @babel/runtime from 7.24.4 to 7.24.5
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.24.4 to 7.24.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.24.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>
2024-05-09 12:17:00 +02:00
Nextcloud bot
86551e9c8e Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-05-07 00:39:17 +00:00
dependabot[bot]
76f20011c1 Merge pull request #5846 from nextcloud/dependabot/npm_and_yarn/stable27/dompurify-3.1.2 2024-05-04 04:33:57 +00:00
dependabot[bot]
6d50829f43 Chore(deps): Bump dompurify from 3.1.1 to 3.1.2
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.1.1 to 3.1.2.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.1.1...3.1.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-04 04:15:26 +00:00
dependabot[bot]
46bc0f3b94 Merge pull request #5844 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/axios-2.5.0 2024-05-04 04:14:12 +00:00
dependabot[bot]
4c558f1ae4 Merge pull request #5845 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/babel-config-1.1.1 2024-05-04 04:14:08 +00:00
dependabot[bot]
1c03b1529c Merge pull request #5843 from nextcloud/dependabot/npm_and_yarn/stable27/relative-ci/agent-4.2.7 2024-05-04 04:12:38 +00:00
dependabot[bot]
ac6ad995cd Merge pull request #5841 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/initial-state-2.2.0 2024-05-04 04:10:47 +00:00
dependabot[bot]
fc96836c93 Chore(deps-dev): Bump @nextcloud/babel-config from 1.0.0 to 1.1.1
Bumps [@nextcloud/babel-config](https://github.com/nextcloud/babel-config) from 1.0.0 to 1.1.1.
- [Release notes](https://github.com/nextcloud/babel-config/releases)
- [Commits](https://github.com/nextcloud/babel-config/compare/v1.0.0...v1.1.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-04 03:48:30 +00:00
dependabot[bot]
fc063a446c Chore(deps): Bump @nextcloud/axios from 2.4.0 to 2.5.0
Bumps [@nextcloud/axios](https://github.com/nextcloud/nextcloud-axios) from 2.4.0 to 2.5.0.
- [Release notes](https://github.com/nextcloud/nextcloud-axios/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-axios/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-axios/compare/v2.4.0...v2.5.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>
2024-05-04 03:48:13 +00:00
dependabot[bot]
b0ee7ffa26 Chore(deps-dev): Bump @relative-ci/agent from 4.2.6 to 4.2.7
Bumps [@relative-ci/agent](https://github.com/relative-ci/agent) from 4.2.6 to 4.2.7.
- [Release notes](https://github.com/relative-ci/agent/releases)
- [Commits](https://github.com/relative-ci/agent/compare/v4.2.6...v4.2.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-04 03:47:59 +00:00
dependabot[bot]
994d351ac1 Chore(deps): Bump @nextcloud/initial-state from 2.1.0 to 2.2.0
Bumps [@nextcloud/initial-state](https://github.com/nextcloud/nextcloud-initial-state) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/nextcloud/nextcloud-initial-state/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-initial-state/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-initial-state/compare/v2.1.0...v2.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-04 03:47:22 +00:00
Nextcloud bot
c1ce0aaabe Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-05-02 00:37:14 +00:00
dependabot[bot]
bed7f63461 Merge pull request #5807 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/auth-2.3.0 2024-04-27 02:42:49 +00:00
dependabot[bot]
1ab361d280 Merge pull request #5805 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/event-bus-3.2.0 2024-04-27 02:32:35 +00:00
dependabot[bot]
3323100808 Merge pull request #5806 from nextcloud/dependabot/npm_and_yarn/stable27/dompurify-3.1.1 2024-04-27 02:07:42 +00:00
dependabot[bot]
6cd47a9854 Chore(deps): Bump @nextcloud/auth from 2.2.1 to 2.3.0
Bumps [@nextcloud/auth](https://github.com/nextcloud/nextcloud-auth) from 2.2.1 to 2.3.0.
- [Release notes](https://github.com/nextcloud/nextcloud-auth/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-auth/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-auth/compare/v2.2.1...v2.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-27 01:07:54 +00:00
dependabot[bot]
0bf4905030 Chore(deps): Bump dompurify from 3.0.11 to 3.1.1
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.0.11 to 3.1.1.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.0.11...3.1.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-27 01:07:33 +00:00
dependabot[bot]
f955bad413 Chore(deps): Bump @nextcloud/event-bus from 3.1.0 to 3.2.0
Bumps [@nextcloud/event-bus](https://github.com/nextcloud/nextcloud-event-bus) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/nextcloud/nextcloud-event-bus/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-event-bus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-event-bus/compare/v3.1.0...v3.2.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>
2024-04-27 01:07:18 +00:00
Nextcloud bot
2731a044ce Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-04-27 00:37:01 +00:00
Nextcloud bot
1189dc083f Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-04-25 00:37:28 +00:00
Nextcloud bot
c72c6b7f29 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-04-24 00:36:59 +00:00
Julius Härtl
6e5d88d2b7 Merge pull request #5726 from nextcloud/backport/5723/stable27
[stable27] Clarify config file not found exception message
2024-04-23 19:28:20 +02:00
Nextcloud bot
e4db2c9ace Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-04-23 00:37:19 +00:00
dependabot[bot]
6fca0cc5ff Merge pull request #5784 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/dialogs-4.2.7 2024-04-20 01:43:42 +00:00
dependabot[bot]
8641cfb9ea Merge pull request #5782 from nextcloud/dependabot/npm_and_yarn/stable27/eslint-plugin-cypress-2.15.2 2024-04-20 01:42:49 +00:00
dependabot[bot]
b19dddfa84 Chore(deps): Bump @nextcloud/dialogs from 4.2.6 to 4.2.7
Bumps [@nextcloud/dialogs](https://github.com/nextcloud-libraries/nextcloud-dialogs) from 4.2.6 to 4.2.7.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-dialogs/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-dialogs/blob/v4.2.7/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-dialogs/compare/v4.2.6...v4.2.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-20 01:26:15 +00:00
dependabot[bot]
6da100f39f Chore(deps-dev): Bump eslint-plugin-cypress from 2.15.1 to 2.15.2
Bumps [eslint-plugin-cypress](https://github.com/cypress-io/eslint-plugin-cypress) from 2.15.1 to 2.15.2.
- [Release notes](https://github.com/cypress-io/eslint-plugin-cypress/releases)
- [Commits](https://github.com/cypress-io/eslint-plugin-cypress/compare/v2.15.1...v2.15.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-20 01:25:52 +00:00
Julius Härtl
eb9288d2bb Merge pull request #5763 from nextcloud/automated/noid/stable27-update-nextcloud-ocp
[stable27] Update nextcloud/ocp dependency
2024-04-18 08:34:48 +02:00
Nextcloud bot
a54eea62de Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-04-17 00:37:19 +00:00
nextcloud-command
80dd40d595 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2024-04-14 03:33:42 +00:00
Nextcloud bot
6ac40933ce Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-04-14 00:36:37 +00:00
Nextcloud bot
8f3c22f718 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-04-07 00:37:08 +00:00
dependabot[bot]
bf043b455a Merge pull request #5733 from nextcloud/dependabot/npm_and_yarn/stable27/babel/runtime-7.24.4 2024-04-06 02:45:35 +00:00
dependabot[bot]
16d930df22 Chore(deps): Bump @babel/runtime from 7.24.0 to 7.24.4
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.24.0 to 7.24.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.24.4/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-06 01:39:45 +00:00
Nextcloud bot
5074b47f7d Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-04-05 00:37:24 +00:00
Nextcloud bot
e24eb88cc4 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-04-04 00:36:41 +00:00
Jim Madge
b70204c5b1 Clarify config file not found exception message
Signed-off-by: Jim Madge <jmadge@turing.ac.uk>
2024-04-03 08:29:50 +00:00
Nextcloud bot
99d47d0ea2 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-04-03 00:36:48 +00:00
Nextcloud bot
1620e35f74 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-04-02 00:36:08 +00:00
Nextcloud bot
4600a8c122 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-04-01 00:36:04 +00:00
Nextcloud bot
329272d65a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-03-31 00:36:56 +00:00
Nextcloud bot
c4b0e08d44 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-03-30 00:37:39 +00:00
dependabot[bot]
75242c09d2 Merge pull request #5715 from nextcloud/dependabot/npm_and_yarn/stable27/relative-ci/agent-4.2.6 2024-03-29 06:55:45 +00:00
dependabot[bot]
e2c78434e4 Chore(deps-dev): Bump @relative-ci/agent from 4.2.5 to 4.2.6
Bumps [@relative-ci/agent](https://github.com/relative-ci/agent) from 4.2.5 to 4.2.6.
- [Release notes](https://github.com/relative-ci/agent/releases)
- [Commits](https://github.com/relative-ci/agent/compare/v4.2.5...v4.2.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-29 06:45:25 +00:00
Nextcloud bot
3749f4d9b0 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-03-29 00:42:07 +00:00
Julius Härtl
7fe13533b9 ci: Update base query count
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-03-27 15:03:02 +00:00
Julius Härtl
0a9b64c758 fix: Avoid conflicts on deck attachments folder name
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-03-27 15:03:02 +00:00
Nextcloud bot
460a08effa Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-03-27 00:37:27 +00:00
Nextcloud bot
3aea97bdae Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-03-25 00:36:29 +00:00
Nextcloud bot
a33bb9dfb2 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-03-24 00:37:04 +00:00
dependabot[bot]
72375fcfab Merge pull request #5697 from nextcloud/dependabot/npm_and_yarn/stable27/dompurify-3.0.11 2024-03-23 04:23:44 +00:00
dependabot[bot]
e52c520550 Chore(deps): Bump dompurify from 3.0.9 to 3.0.11
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.0.9 to 3.0.11.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.0.9...3.0.11)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-23 03:20:59 +00:00
Nextcloud bot
454d87c1d0 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-03-23 00:36:03 +00:00
Nextcloud bot
7620ec382e Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-03-22 00:35:59 +00:00
Nextcloud bot
1184d5c6bf Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-03-21 00:37:25 +00:00
Nextcloud bot
8fdd2d134b Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-03-16 00:35:54 +00:00
Nextcloud bot
395c93366b Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-03-14 00:37:05 +00:00
Julius Härtl
284bc6e9c5 Merge pull request #5658 from nextcloud/automated/noid/stable27-update-nextcloud-ocp
[stable27] Update nextcloud/ocp dependency
2024-03-11 08:13:28 +01:00
nextcloud-command
04b769d6d6 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2024-03-10 02:38:38 +00:00
Nextcloud bot
5a1a498af9 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-03-08 00:36:23 +00:00
Nextcloud bot
e821ba1341 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-03-07 00:44:13 +00:00
Nextcloud bot
f435f66cf5 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-03-05 00:37:39 +00:00
Nextcloud bot
f9f45d0aec Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-03-04 00:36:53 +00:00
Nextcloud bot
a9227ee883 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-03-03 00:35:29 +00:00
dependabot[bot]
fdbc6fdc0f Merge pull request #5645 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/dialogs-4.2.6 2024-03-02 03:51:49 +00:00
dependabot[bot]
e4e39faa58 Merge pull request #5643 from nextcloud/dependabot/npm_and_yarn/stable27/dompurify-3.0.9 2024-03-02 03:49:28 +00:00
dependabot[bot]
d63ebaf351 Merge pull request #5644 from nextcloud/dependabot/npm_and_yarn/stable27/babel/runtime-7.24.0 2024-03-02 03:49:15 +00:00
dependabot[bot]
0ae87e788d Chore(deps): Bump @nextcloud/dialogs from 4.2.5 to 4.2.6
Bumps [@nextcloud/dialogs](https://github.com/nextcloud-libraries/nextcloud-dialogs) from 4.2.5 to 4.2.6.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-dialogs/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-dialogs/blob/v4.2.6/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-dialogs/compare/v4.2.5...v4.2.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-02 02:54:00 +00:00
dependabot[bot]
3ebed58179 Chore(deps): Bump @babel/runtime from 7.23.9 to 7.24.0
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.23.9 to 7.24.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.24.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>
2024-03-02 02:53:42 +00:00
dependabot[bot]
8e84aa0c8e Chore(deps): Bump dompurify from 3.0.8 to 3.0.9
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.0.8 to 3.0.9.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.0.8...3.0.9)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-02 02:53:21 +00:00
Nextcloud bot
747ca07129 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-03-02 00:35:17 +00:00
Nextcloud bot
9d0a5783d9 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-03-01 09:01:28 +00:00
Nextcloud bot
6519f14761 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-02-29 00:36:59 +00:00
Nextcloud bot
fec79db898 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-02-28 00:46:56 +00:00
Nextcloud bot
ba282cd698 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-02-27 00:35:47 +00:00
Nextcloud bot
175db14042 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-02-25 00:38:13 +00:00
Nextcloud bot
89bbe502ff Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-02-24 00:36:00 +00:00
Nextcloud bot
86279fd06a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-02-23 00:36:11 +00:00
Julius Härtl
69ff3454b4 Merge pull request #5610 from nextcloud/fix/5286/stable27-talk-plugin
[stable27] fix(CardMenu): introduce cardRichObject in CardMenu
2024-02-20 20:05:33 +01:00
Maksim Sukharev
10a3060454 fix(CardMenu): introduce cardRichObject in CardMenu
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
2024-02-20 15:23:00 +01:00
Nextcloud bot
0542900bb3 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-02-19 00:35:30 +00:00
Nextcloud bot
bd2e74770e Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-02-18 00:36:37 +00:00
Nextcloud bot
8a576880a8 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-02-16 00:36:19 +00:00
Nextcloud bot
e19ffd163c Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-02-15 00:38:41 +00:00
Julius Härtl
a3e870d54d chore(release): Bump version to 1.11.4
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-02-14 17:01:06 +01:00
Julius Härtl
8c2c387525 Merge pull request #5583 from nextcloud/dependabot/npm_and_yarn/stable27/relative-ci/agent-4.2.5
Chore(deps-dev): Bump @relative-ci/agent from 4.2.4 to 4.2.5
2024-02-14 12:09:28 +01:00
Nextcloud bot
62dee21821 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-02-14 00:36:19 +00:00
dependabot[bot]
d16249726c Merge pull request #5582 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/dialogs-4.2.5 2024-02-10 04:16:11 +00:00
dependabot[bot]
ae0beda636 Chore(deps-dev): Bump @relative-ci/agent from 4.2.4 to 4.2.5
Bumps [@relative-ci/agent](https://github.com/relative-ci/agent) from 4.2.4 to 4.2.5.
- [Release notes](https://github.com/relative-ci/agent/releases)
- [Commits](https://github.com/relative-ci/agent/compare/v4.2.4...v4.2.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-10 02:58:46 +00:00
dependabot[bot]
c4593568c8 Chore(deps): Bump @nextcloud/dialogs from 4.2.4 to 4.2.5
Bumps [@nextcloud/dialogs](https://github.com/nextcloud-libraries/nextcloud-dialogs) from 4.2.4 to 4.2.5.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-dialogs/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-dialogs/blob/v4.2.5/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-dialogs/compare/v4.2.4...v4.2.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-10 02:58:35 +00:00
Nextcloud bot
54c8202d1f Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-02-10 00:37:43 +00:00
Nextcloud bot
4746754c25 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-02-09 00:36:12 +00:00
Julius Härtl
fe7c4430f5 Merge pull request #5547 from nextcloud/backport/5542/stable27
[stable27] fix(PermissionService#getPermissions): Catch exceptions from getBoard method
2024-02-05 07:12:02 +01:00
Julius Härtl
db2d80a2b9 Merge pull request #5544 from nextcloud/backport/5533/stable27
[stable27] fix(activity): Fix permission checks when rendering activities in bac…
2024-02-05 07:10:51 +01:00
dependabot[bot]
5495f35d46 Merge pull request #5566 from nextcloud/dependabot/npm_and_yarn/stable27/vue-material-design-icons-5.3.0 2024-02-03 08:06:23 +00:00
dependabot[bot]
b9f8c598b3 Merge pull request #5565 from nextcloud/dependabot/npm_and_yarn/stable27/relative-ci/agent-4.2.4 2024-02-03 08:06:16 +00:00
dependabot[bot]
f8b5b08871 Merge pull request #5564 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/dialogs-4.2.4 2024-02-03 08:05:53 +00:00
dependabot[bot]
224b1033ab Chore(deps): Bump vue-material-design-icons from 5.2.0 to 5.3.0
Bumps [vue-material-design-icons](https://github.com/robcresswell/vue-material-design-icons) from 5.2.0 to 5.3.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.2.0...5.3.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>
2024-02-03 03:33:48 +00:00
dependabot[bot]
359d4da5e3 Chore(deps-dev): Bump @relative-ci/agent from 4.2.3 to 4.2.4
Bumps [@relative-ci/agent](https://github.com/relative-ci/agent) from 4.2.3 to 4.2.4.
- [Release notes](https://github.com/relative-ci/agent/releases)
- [Commits](https://github.com/relative-ci/agent/compare/v4.2.3...v4.2.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>
2024-02-03 03:33:40 +00:00
dependabot[bot]
ad846b9d1a Chore(deps): Bump @nextcloud/dialogs from 4.2.3 to 4.2.4
Bumps [@nextcloud/dialogs](https://github.com/nextcloud-libraries/nextcloud-dialogs) from 4.2.3 to 4.2.4.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-dialogs/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-dialogs/blob/v4.2.4/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-dialogs/compare/v4.2.3...v4.2.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>
2024-02-03 03:33:10 +00:00
Nextcloud bot
bc85a944b1 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-02-03 00:36:17 +00:00
Marcel Klehr
16286010ef fix(PermissionService#getPermissions): Catch exceptions from getBoard method
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2024-02-02 13:00:00 +00:00
Joas Schilling
517d79156a fix(activity): Fix permission checks when rendering activities in background jobs
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-02-02 12:55:46 +00:00
dependabot[bot]
eaa639e9ba Merge pull request #5528 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/stylelint-config-2.4.0 2024-01-27 06:33:12 +00:00
dependabot[bot]
fdd86f68f0 Merge pull request #5530 from nextcloud/dependabot/npm_and_yarn/stable27/babel/runtime-7.23.9 2024-01-27 06:32:42 +00:00
dependabot[bot]
1417051b48 Merge pull request #5526 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/router-2.2.1 2024-01-27 06:32:24 +00:00
dependabot[bot]
0985179e58 Chore(deps): Bump @babel/runtime from 7.23.8 to 7.23.9
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.23.8 to 7.23.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.23.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>
2024-01-27 03:48:42 +00:00
dependabot[bot]
05cd47141f Chore(deps-dev): Bump @nextcloud/stylelint-config from 2.3.1 to 2.4.0
Bumps [@nextcloud/stylelint-config](https://github.com/nextcloud/stylelint-config) from 2.3.1 to 2.4.0.
- [Release notes](https://github.com/nextcloud/stylelint-config/releases)
- [Changelog](https://github.com/nextcloud-libraries/stylelint-config/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/stylelint-config/compare/v2.3.1...v2.4.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>
2024-01-27 03:48:04 +00:00
dependabot[bot]
e389ac4ad6 Chore(deps): Bump @nextcloud/router from 2.2.0 to 2.2.1
Bumps [@nextcloud/router](https://github.com/nextcloud/nextcloud-router) from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/nextcloud/nextcloud-router/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-router/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-router/compare/v2.2.0...v2.2.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-27 03:47:40 +00:00
Nextcloud bot
1257b7d77b Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-26 00:36:09 +00:00
Nextcloud bot
f12c56ae0d Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-24 00:36:31 +00:00
Nextcloud bot
6e6fc25b35 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-23 00:45:22 +00:00
Nextcloud bot
1b670aafa3 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-22 00:36:31 +00:00
Nextcloud bot
1f5071ad5f Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-21 00:54:23 +00:00
dependabot[bot]
f0921676a4 Merge pull request #5510 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/dialogs-4.2.3 2024-01-20 05:09:44 +00:00
dependabot[bot]
e7c7219b76 Chore(deps): Bump @nextcloud/dialogs from 4.2.2 to 4.2.3
Bumps [@nextcloud/dialogs](https://github.com/nextcloud-libraries/nextcloud-dialogs) from 4.2.2 to 4.2.3.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-dialogs/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-dialogs/blob/v4.2.3/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-dialogs/compare/v4.2.2...v4.2.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-20 03:59:15 +00:00
Nextcloud bot
c01af6b5bc Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-20 00:37:36 +00:00
Nextcloud bot
6d27c56ef3 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-19 00:36:00 +00:00
Nextcloud bot
ab49524214 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-18 00:36:06 +00:00
Julius Härtl
a50884a6b7 chore(release): Bump version to 1.11.2
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-01-17 15:07:55 +01:00
Nextcloud bot
defb10bee0 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-16 00:36:01 +00:00
Julius Härtl
4fc4b5b0c2 Merge pull request #5461 from nextcloud/dependabot/npm_and_yarn/stable27/babel/runtime-7.23.8
Chore(deps): Bump @babel/runtime from 7.23.7 to 7.23.8
2024-01-15 12:04:43 +01:00
dependabot[bot]
af142340f6 Chore(deps): Bump @babel/runtime from 7.23.7 to 7.23.8
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.23.7 to 7.23.8.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.8/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-15 11:31:04 +01:00
Nextcloud bot
449b576c33 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-14 00:36:29 +00:00
dependabot[bot]
332143eff5 Merge pull request #5463 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/notify_push-1.1.4 2024-01-13 03:20:30 +00:00
dependabot[bot]
9cbd3f9e87 Chore(deps): Bump @nextcloud/notify_push from 1.1.3 to 1.1.4
Bumps [@nextcloud/notify_push](https://github.com/icewind1991/notify_push-client) from 1.1.3 to 1.1.4.
- [Commits](https://github.com/icewind1991/notify_push-client/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-13 02:14:52 +00:00
dependabot[bot]
5c50bcab88 Merge pull request #5462 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/moment-1.3.1 2024-01-13 02:14:08 +00:00
dependabot[bot]
6daebf941a Chore(deps): Bump @nextcloud/moment from 1.2.2 to 1.3.1
Bumps [@nextcloud/moment](https://github.com/nextcloud/nextcloud-moment) from 1.2.2 to 1.3.1.
- [Release notes](https://github.com/nextcloud/nextcloud-moment/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-moment/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-moment/compare/v1.2.2...v1.3.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-13 02:04:56 +00:00
Nextcloud bot
9ecf52952b Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-13 00:37:36 +00:00
Julius Härtl
cfff7855fc Merge pull request #5442 from nextcloud/backport/5423/stable27
[stable27] Fix deleted card/board issues
2024-01-12 09:30:55 +01:00
Nextcloud bot
b692630900 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-12 00:35:51 +00:00
Nextcloud bot
f719264979 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-10 00:37:25 +00:00
dependabot[bot]
1bf4e4c623 Merge pull request #5425 from nextcloud/dependabot/npm_and_yarn/stable27/dompurify-3.0.8 2024-01-09 21:58:19 +00:00
dependabot[bot]
3520d831e9 Merge pull request #5427 from nextcloud/dependabot/npm_and_yarn/stable27/relative-ci/agent-4.2.3 2024-01-09 21:58:13 +00:00
dependabot[bot]
07b805621d Chore(deps-dev): Bump @relative-ci/agent from 4.2.2 to 4.2.3
Bumps [@relative-ci/agent](https://github.com/relative-ci/agent) from 4.2.2 to 4.2.3.
- [Release notes](https://github.com/relative-ci/agent/releases)
- [Commits](https://github.com/relative-ci/agent/compare/v4.2.2...v4.2.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-09 22:48:24 +01:00
dependabot[bot]
4b0ceee2ac Chore(deps): Bump dompurify from 3.0.6 to 3.0.8
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.0.6 to 3.0.8.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.0.6...3.0.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-09 22:48:11 +01:00
Julius Härtl
b8edc70db2 Merge pull request #5435 from nextcloud/automated/noid/stable27-update-nextcloud-ocp
[stable27] Update nextcloud/ocp dependency
2024-01-09 20:25:26 +01:00
nextcloud-command
ef72c924e7 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2024-01-09 17:54:11 +01:00
Julius Härtl
1577582def chore: Fix ci setup for activity
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-01-09 15:13:40 +01:00
Julius Härtl
b24d512fda fix: Limit card activities for deleted cards
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-01-09 15:13:40 +01:00
Julius Härtl
e1bd8b2d72 fix: Further limit updating cards
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-01-09 15:13:40 +01:00
Julius Härtl
48dfe02fe4 fix: limit to non-deleted cards
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-01-09 15:13:40 +01:00
Julius Härtl
aa5fb57cb4 fix: Consider a deleted board inaccessible to share recipients
Only the owner can delete/undo a board deletion so there is no reason
other users should have any permission on a board marked as deleted

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-01-09 15:13:40 +01:00
Julius Härtl
818a08b6a1 tests: Add integration tests for deleted boards/cards
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-01-09 15:13:39 +01:00
Julius Härtl
0ef2041a29 Merge pull request #5438 from nextcloud/backport/5354/stable27
[stable27] fix: allow null label colors in trello json importer
2024-01-09 14:55:13 +01:00
Julius Härtl
b7d624c671 chore: Fix php-cs and psalm
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-01-09 11:32:34 +01:00
Mario Jäckle
6b5667dd8f fix: allow null label colors in trello json importer
Signed-off-by: Mario Jäckle <github@jacksbox.de>
2024-01-09 10:57:05 +01:00
Nextcloud bot
26a03c3b86 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-09 00:37:05 +00:00
Nextcloud bot
5569028a72 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-07 00:39:58 +00:00
Nextcloud bot
9aeec692d0 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-05 00:39:47 +00:00
Nextcloud bot
0d754c713c Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-04 00:37:38 +00:00
Julius Härtl
6c8b28f68c Merge pull request #5414 from nextcloud/dependabot/npm_and_yarn/stable27/moment-2.30.1
Chore(deps): Bump moment from 2.29.4 to 2.30.1
2024-01-03 23:28:36 +01:00
Julius Härtl
41743bfe65 Merge pull request #5415 from nextcloud/dependabot/npm_and_yarn/stable27/vue-template-compiler-2.7.16
Chore(deps-dev): Bump vue-template-compiler from 2.7.15 to 2.7.16
2024-01-03 23:28:17 +01:00
Julius Härtl
64427acb6b Merge pull request #5416 from nextcloud/dependabot/npm_and_yarn/stable27/babel/runtime-7.23.7
Chore(deps): Bump @babel/runtime from 7.23.6 to 7.23.7
2024-01-03 23:28:06 +01:00
Julius Härtl
58219901ad Merge pull request #5417 from nextcloud/dependabot/npm_and_yarn/stable27/vue-2.7.16
Chore(deps): Bump vue from 2.7.15 to 2.7.16
2024-01-03 23:27:53 +01:00
Julius Härtl
869c460e40 Merge pull request #5420 from nextcloud/backport/5296/stable27
[stable27] Fix small issues around delete/undo
2024-01-03 23:27:35 +01:00
Julius Härtl
487941532a fix: Properly undo card deletion in the frontend
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-01-03 16:51:52 +01:00
Julius Härtl
857a82ecff fix: Show proper error page when board was not found
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-01-03 16:50:24 +01:00
Julius Härtl
09a2f0ea5e fix: Only query boards not marked for deletion unless we want to undo
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-01-03 16:50:23 +01:00
Nextcloud bot
66e33773e5 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-01-03 00:38:24 +00:00
dependabot[bot]
230bffc85a Chore(deps): Bump vue from 2.7.15 to 2.7.16
Bumps [vue](https://github.com/vuejs/core) from 2.7.15 to 2.7.16.
- [Release notes](https://github.com/vuejs/core/releases)
- [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/core/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-30 03:43:58 +00:00
dependabot[bot]
9f5936fe16 Chore(deps): Bump @babel/runtime from 7.23.6 to 7.23.7
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.23.6 to 7.23.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.7/packages/babel-runtime)

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

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

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-30 03:43:08 +00:00
Nextcloud bot
52d860f447 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-30 00:39:14 +00:00
Nextcloud bot
d07c7dd916 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-27 00:36:29 +00:00
Nextcloud bot
13ba28bc75 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-26 00:38:12 +00:00
Nextcloud bot
9867a8331e Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-24 00:41:13 +00:00
Nextcloud bot
51146ea811 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-23 00:37:25 +00:00
Nextcloud bot
6b81352764 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-20 00:35:26 +00:00
Nextcloud bot
30c82eacda Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-18 00:36:07 +00:00
Julius Härtl
8c96524e1c Merge pull request #5379 from nextcloud/dependabot/npm_and_yarn/stable27/relative-ci/agent-4.2.2
Chore(deps-dev): Bump @relative-ci/agent from 4.2.1 to 4.2.2
2023-12-17 09:23:53 +01:00
Julius Härtl
1277fe2e35 chore: Update composer deps
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-12-17 09:19:43 +01:00
Nextcloud bot
d02d397563 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-17 00:36:22 +00:00
dependabot[bot]
2675353070 Merge pull request #5380 from nextcloud/dependabot/npm_and_yarn/stable27/babel/runtime-7.23.6 2023-12-16 02:13:51 +00:00
dependabot[bot]
f6645753c4 Chore(deps): Bump @babel/runtime from 7.23.5 to 7.23.6
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.23.5 to 7.23.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.23.6/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-16 02:08:04 +00:00
dependabot[bot]
eaa9bef731 Chore(deps-dev): Bump @relative-ci/agent from 4.2.1 to 4.2.2
Bumps [@relative-ci/agent](https://github.com/relative-ci/agent) from 4.2.1 to 4.2.2.
- [Release notes](https://github.com/relative-ci/agent/releases)
- [Commits](https://github.com/relative-ci/agent/compare/v4.2.1...v4.2.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-16 02:07:47 +00:00
Nextcloud bot
be31a7017b Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-15 00:35:57 +00:00
Nextcloud bot
f73497d053 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-13 00:36:48 +00:00
Nextcloud bot
e098e13cfe Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-12 00:35:30 +00:00
Nextcloud bot
fbf993ee00 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-11 00:41:16 +00:00
Nextcloud bot
d4930eedd7 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-10 00:35:25 +00:00
Nextcloud bot
72c328bb9a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-09 00:35:27 +00:00
Nextcloud bot
9b8e6282b6 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-08 00:35:42 +00:00
Nextcloud bot
16459f96e2 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-07 00:36:17 +00:00
Nextcloud bot
b86e0bb0e3 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-06 00:37:12 +00:00
Nextcloud bot
c71376cb3f Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-05 00:37:41 +00:00
dependabot[bot]
796ff48769 Merge pull request #5340 from nextcloud/dependabot/npm_and_yarn/stable27/babel/runtime-7.23.5 2023-12-02 04:19:07 +00:00
dependabot[bot]
d33c12b026 Chore(deps): Bump @babel/runtime from 7.23.4 to 7.23.5
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.23.4 to 7.23.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.5/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-02 03:05:00 +00:00
Nextcloud bot
55b89f66f7 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-12-01 00:34:21 +00:00
Julius Härtl
3be4068c82 chore(release): Bump version to 1.11.2
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-29 12:29:24 +01:00
Nextcloud bot
6a44b7c765 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-27 00:40:18 +00:00
Nextcloud bot
b2b7f2951f Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-26 00:39:56 +00:00
Nextcloud bot
188eae833e Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-25 00:44:13 +00:00
Nextcloud bot
a07d8bd687 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-24 01:06:34 +00:00
dependabot[bot]
cac3df45da Merge pull request #5320 from nextcloud/dependabot/npm_and_yarn/stable27/babel/runtime-7.23.4 2023-11-23 16:04:23 +00:00
dependabot[bot]
a42e6ace9a Chore(deps): Bump @babel/runtime from 7.23.2 to 7.23.4
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.23.2 to 7.23.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.4/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-23 15:19:32 +00:00
Nextcloud bot
d6a728627c Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-23 00:42:57 +00:00
Nextcloud bot
b7a4dd928a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-22 00:43:02 +00:00
Nextcloud bot
746ae60fc7 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-21 00:44:13 +00:00
Nextcloud bot
ce6c480330 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-20 00:43:58 +00:00
dependabot[bot]
f6fafb6d6b Merge pull request #5300 from nextcloud/dependabot/npm_and_yarn/stable27/relative-ci/agent-4.2.1 2023-11-18 02:14:00 +00:00
dependabot[bot]
8266fd3ed4 Chore(deps-dev): Bump @relative-ci/agent from 4.1.10 to 4.2.1
Bumps [@relative-ci/agent](https://github.com/relative-ci/agent) from 4.1.10 to 4.2.1.
- [Release notes](https://github.com/relative-ci/agent/releases)
- [Commits](https://github.com/relative-ci/agent/compare/v4.1.10...v4.2.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-18 02:07:41 +00:00
Julius Härtl
7e5dbb608d Merge pull request #5297 from nextcloud/backport/5294/stable27 2023-11-17 12:57:24 +01:00
Julius Härtl
3d1e28442f fix: Use text content as result for comments
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-17 10:38:27 +00:00
Julius Härtl
e9574f3fc4 chore(release): Bump version to 1.11.1
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-15 09:15:37 +01:00
Julius Härtl
f7ba07713e Merge pull request #5291 from nextcloud/backport/5260/stable27 2023-11-15 09:12:27 +01:00
Julius Härtl
c2fd39779f fix: Avoid too large index on postgres as indexing just the last_editor column is enough
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-15 09:00:18 +01:00
Nextcloud bot
cc5e6c349a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-15 00:48:16 +00:00
Julius Härtl
8855ae4d8c Merge pull request #5288 from nextcloud/backport/4817/stable27 2023-11-14 16:21:24 +01:00
Luka Trovic
bcefc2a36c fix: cypress issue
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2023-11-14 14:54:15 +00:00
Luka Trovic
d0049b5257 fix: open card in modal on main route
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2023-11-14 14:54:15 +00:00
Julius Härtl
ee673e358e Merge pull request #5286 from nextcloud/backport/5280/stable27 2023-11-14 09:14:38 +01:00
Nextcloud bot
6038140492 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-14 00:43:36 +00:00
Julius Härtl
047400e05e style: Fix missing trailing commas
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 23:34:05 +01:00
Julius Härtl
30842fa969 fix: Show tooltip for readable date
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 23:33:25 +01:00
Julius Härtl
f8f81af3f8 fix: Make sure to always update card description when navigating awayfix
fix #5254
fix #2705

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 23:15:49 +01:00
Julius Härtl
ffe8aa55d0 fix: Set fixed height for card modal (fix #4296)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 23:15:49 +01:00
Julius Härtl
00d33a582f fix: More fitting click target for title editing
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 23:15:39 +01:00
Julius Härtl
0d61202ecc fix: Use localCompare to sort labels
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 23:15:39 +01:00
Julius Härtl
d10e5582d7 fix: Disable dragging archived cards (fix #3271)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 23:15:20 +01:00
Julius Härtl
b3b7d3907d fix: Add title with absolute date time to activity (fix #4508, fix #2122)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 23:15:19 +01:00
Julius Härtl
4fbb75b073 fix: Detect end of the activity responses (fix #3395)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 23:15:19 +01:00
Julius Härtl
9b00792827 fix: Expose card actions in the card menu (fix #3180)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-13 23:14:23 +01:00
Nextcloud bot
06c1835eda Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-13 00:41:35 +00:00
Nextcloud bot
cadfd3c58a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-12 00:40:50 +00:00
dependabot[bot]
755fae987f Merge pull request #5272 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/vue-7.12.7 2023-11-11 06:42:32 +00:00
dependabot[bot]
3514416aa6 bump @nextcloud/vue from 7.12.6 to 7.12.7
---
updated-dependencies:
- dependency-name: "@nextcloud/vue"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-11 05:44:44 +00:00
dependabot[bot]
2cfb85b3db Merge pull request #5271 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/dialogs-4.2.2 2023-11-11 05:44:02 +00:00
dependabot[bot]
ab9b24e664 Chore(deps): Bump @nextcloud/dialogs from 4.2.1 to 4.2.2
Bumps [@nextcloud/dialogs](https://github.com/nextcloud-libraries/nextcloud-dialogs) from 4.2.1 to 4.2.2.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-dialogs/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-dialogs/blob/v4.2.2/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-dialogs/compare/v4.2.1...v4.2.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-11 03:08:47 +00:00
Nextcloud bot
d8e0d70031 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-11 00:38:53 +00:00
Nextcloud bot
a9a6a87e8a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-10 00:40:55 +00:00
Nextcloud bot
3e72c1975d Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-09 00:43:09 +00:00
Julius Härtl
48bde61347 Merge pull request #5263 from nextcloud/backport/5262/stable27 2023-11-07 13:11:31 +01:00
Julius Härtl
c17b11192d fix: Check both card reference url patterns
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-11-07 10:24:11 +00:00
Nextcloud bot
69caca2871 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-07 00:49:39 +00:00
Nextcloud bot
036b67c48a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-05 00:45:38 +00:00
Nextcloud bot
da15b2f50c Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-03 00:43:34 +00:00
Nextcloud bot
75688cbb5c Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-02 00:41:15 +00:00
Nextcloud bot
0fa9544691 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-11-01 00:45:17 +00:00
Nextcloud bot
1e5c3b4fdd Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-31 00:44:39 +00:00
Nextcloud bot
1843c9e712 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-30 00:42:28 +00:00
dependabot[bot]
a7bafab341 Merge pull request #5238 from nextcloud/dependabot/npm_and_yarn/stable27/vue-2.7.15 2023-10-28 04:27:35 +00:00
dependabot[bot]
f94d62d96b Chore(deps): Bump vue from 2.7.14 to 2.7.15
Bumps [vue](https://github.com/vuejs/core) from 2.7.14 to 2.7.15.
- [Release notes](https://github.com/vuejs/core/releases)
- [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/core/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-28 03:17:35 +00:00
dependabot[bot]
baf0bba6c3 Merge pull request #5237 from nextcloud/dependabot/npm_and_yarn/stable27/vue-template-compiler-2.7.15 2023-10-28 03:16:51 +00:00
dependabot[bot]
3cac7877f5 Chore(deps-dev): Bump vue-template-compiler from 2.7.14 to 2.7.15
Bumps [vue-template-compiler](https://github.com/vuejs/vue) from 2.7.14 to 2.7.15.
- [Release notes](https://github.com/vuejs/vue/releases)
- [Changelog](https://github.com/vuejs/vue/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue/compare/v2.7.14...v2.7.15)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-28 01:21:57 +00:00
Nextcloud bot
c4a06a6529 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-26 00:44:22 +00:00
Nextcloud bot
f18fc1a9df Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-25 00:59:17 +00:00
Nextcloud bot
f87d53052a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-24 00:44:27 +00:00
Nextcloud bot
6ae5a8d640 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-23 00:42:47 +00:00
Nextcloud bot
5f5561f202 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-22 00:45:26 +00:00
dependabot[bot]
9e7a547764 Merge pull request #5224 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/router-2.2.0 2023-10-21 04:58:11 +00:00
dependabot[bot]
49b5b0dafe Merge pull request #5225 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/moment-1.2.2 2023-10-21 04:58:07 +00:00
dependabot[bot]
d7c62045ba Chore(deps): Bump @nextcloud/moment from 1.2.1 to 1.2.2
Bumps [@nextcloud/moment](https://github.com/nextcloud/nextcloud-moment) from 1.2.1 to 1.2.2.
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-moment/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-moment/compare/v1.2.1...v1.2.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-21 02:30:01 +00:00
dependabot[bot]
e97e4dc62f Chore(deps): Bump @nextcloud/router from 2.1.2 to 2.2.0
Bumps [@nextcloud/router](https://github.com/nextcloud/nextcloud-router) from 2.1.2 to 2.2.0.
- [Release notes](https://github.com/nextcloud/nextcloud-router/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-router/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-router/compare/v2.1.2...v2.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-21 02:29:38 +00:00
Nextcloud bot
9ded432281 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-21 00:43:28 +00:00
Nextcloud bot
31fbe0346e Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-20 00:44:45 +00:00
Nextcloud bot
bbba55e415 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-19 00:43:48 +00:00
Nextcloud bot
48e0b2d913 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-18 01:08:13 +00:00
Nextcloud bot
d2f9743249 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-17 00:46:44 +00:00
dependabot[bot]
978a8f3e8d Merge pull request #5200 from nextcloud/dependabot/npm_and_yarn/stable27/relative-ci/agent-4.1.10 2023-10-16 21:05:07 +00:00
Julius Härtl
e5597fb7c1 Merge pull request #5201 from nextcloud/dependabot/npm_and_yarn/stable27/babel/runtime-7.23.2
Chore(deps): Bump @babel/runtime from 7.23.1 to 7.23.2
2023-10-16 23:00:41 +02:00
Julius Härtl
fdcbba4f53 ci(cypress): Fix file picker selector
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-10-16 22:54:30 +02:00
dependabot[bot]
076ff122fc Chore(deps): Bump @babel/runtime from 7.23.1 to 7.23.2
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.23.1 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-runtime)

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-14 01:29:08 +00:00
Nextcloud bot
618f030cef Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-14 00:44:03 +00:00
Nextcloud bot
0ff409a5f4 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-13 01:14:52 +00:00
Nextcloud bot
48cc66767a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-12 00:42:12 +00:00
Nextcloud bot
d67c5a2052 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-11 00:47:35 +00:00
Julius Härtl
be80476de7 Merge pull request #5145 from nextcloud/dependabot/npm_and_yarn/stable27/eslint-plugin-cypress-2.15.1
Chore(deps-dev): Bump eslint-plugin-cypress from 2.14.0 to 2.15.1
2023-10-10 08:36:01 +02:00
Julius Härtl
eb2fae6d77 Merge pull request #5146 from nextcloud/dependabot/npm_and_yarn/stable27/relative-ci/agent-4.1.9
Chore(deps-dev): Bump @relative-ci/agent from 4.1.8 to 4.1.9
2023-10-10 08:35:53 +02:00
Julius Härtl
6e88dd4c1b Merge pull request #5149 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/dialogs-4.2.1
Chore(deps): Bump @nextcloud/dialogs from 4.1.0 to 4.2.1
2023-10-10 08:35:45 +02:00
Julius Härtl
09819dc3ef Merge pull request #5144 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/auth-2.2.1
Chore(deps): Bump @nextcloud/auth from 2.1.0 to 2.2.1
2023-10-10 08:35:30 +02:00
Julius Härtl
bf356216f6 Merge pull request #5174 from nextcloud/dependabot/npm_and_yarn/stable27/babel/runtime-7.23.1
Chore(deps): Bump @babel/runtime from 7.22.15 to 7.23.1
2023-10-10 08:35:23 +02:00
Julius Härtl
437d0cca21 Merge pull request #5171 from nextcloud/dependabot/npm_and_yarn/stable27/dompurify-3.0.6
Chore(deps): Bump dompurify from 3.0.5 to 3.0.6
2023-10-10 08:35:16 +02:00
Julius Härtl
61b2117008 Merge pull request #5173 from nextcloud/dependabot/npm_and_yarn/stable27/markdown-it-13.0.2
Chore(deps): Bump markdown-it from 13.0.1 to 13.0.2
2023-10-10 08:35:04 +02:00
Julius Härtl
4f17681227 Merge pull request #5170 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/vue-7.12.6
Chore(deps): Bump @nextcloud/vue from 7.12.4 to 7.12.6
2023-10-10 08:34:57 +02:00
Julius Härtl
55df8704b7 Merge pull request #5172 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/eslint-config-8.3.0
Chore(deps-dev): Bump @nextcloud/eslint-config from 8.2.1 to 8.3.0
2023-10-10 08:34:39 +02:00
Nextcloud bot
f1e0a6d87d Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-10 01:07:38 +00:00
Nextcloud bot
837f9e9cdc Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-09 00:44:27 +00:00
Nextcloud bot
82e9471857 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-08 00:46:03 +00:00
Nextcloud bot
e2f7fafe6a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-07 01:19:06 +00:00
Nextcloud bot
a70d9df08f Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-06 00:42:35 +00:00
Nextcloud bot
97493f3a9f Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-04 00:42:49 +00:00
Nextcloud bot
0d91aad137 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-03 00:42:00 +00:00
Nextcloud bot
2f3889aff8 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-10-02 00:42:39 +00:00
dependabot[bot]
9178f6fb08 Chore(deps): Bump @babel/runtime from 7.22.15 to 7.23.1
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.22.15 to 7.23.1.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.1/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-30 01:12:51 +00:00
dependabot[bot]
a68d505c06 Chore(deps): Bump markdown-it from 13.0.1 to 13.0.2
Bumps [markdown-it](https://github.com/markdown-it/markdown-it) from 13.0.1 to 13.0.2.
- [Changelog](https://github.com/markdown-it/markdown-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/markdown-it/markdown-it/compare/13.0.1...13.0.2)

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

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

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

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

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-30 01:11:42 +00:00
Nextcloud bot
9cbcc76cd7 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-09-28 00:43:51 +00:00
Nextcloud bot
0643f3ae5b Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-09-26 00:43:50 +00:00
dependabot[bot]
8c276b9c07 Chore(deps): Bump @nextcloud/dialogs from 4.1.0 to 4.2.1
Bumps [@nextcloud/dialogs](https://github.com/nextcloud-libraries/nextcloud-dialogs) from 4.1.0 to 4.2.1.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-dialogs/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-dialogs/blob/v4.2.1/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-dialogs/compare/v4.1.0...v4.2.1)

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

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

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-23 01:17:07 +00:00
dependabot[bot]
6b2eba5e29 Chore(deps): Bump @nextcloud/auth from 2.1.0 to 2.2.1
Bumps [@nextcloud/auth](https://github.com/nextcloud/nextcloud-auth) from 2.1.0 to 2.2.1.
- [Release notes](https://github.com/nextcloud/nextcloud-auth/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-auth/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-auth/compare/v2.1.0...v2.2.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-23 01:16:58 +00:00
Nextcloud bot
a6aba64d27 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-09-22 00:48:00 +00:00
Julius Härtl
f7f1dfaa9e Merge pull request #5132 from nextcloud/automated/noid/stable27-fix-npm-audit 2023-09-17 17:52:24 +02:00
Julius Härtl
18f34b8de9 Merge pull request #5124 from nextcloud/dependabot/npm_and_yarn/stable27/jest-29.7.0 2023-09-17 17:51:59 +02:00
nextcloud-command
af48d11758 chore(deps): fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2023-09-17 03:10:32 +00:00
dependabot[bot]
dbe9ba133d Chore(deps-dev): Bump jest from 29.6.4 to 29.7.0
Bumps [jest](https://github.com/jestjs/jest/tree/HEAD/packages/jest) from 29.6.4 to 29.7.0.
- [Release notes](https://github.com/jestjs/jest/releases)
- [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jestjs/jest/commits/v29.7.0/packages/jest)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-16 01:36:47 +00:00
Julius Härtl
183113a4f1 chore(release): Bump version to 1.11.0
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-09-13 15:01:04 +02:00
Julius Härtl
51750a1cdf Merge pull request #5118 from nextcloud/backport/5096/stable27 2023-09-13 13:37:04 +02:00
Michał Walczak
c5b11b344e fix: export doesn't handle lists with no cards
Signed-off-by: Michał Walczak <mw@michalwalczak.eu>
2023-09-13 11:12:09 +00:00
Nextcloud bot
55296059a9 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-09-11 00:42:49 +00:00
Julius Härtl
f6805b87e1 Merge pull request #5110 from nextcloud/dependabot/npm_and_yarn/stable27/babel/runtime-7.22.15 2023-09-09 09:38:14 +02:00
Julius Härtl
21f32b8e62 Merge pull request #5109 from nextcloud/dependabot/npm_and_yarn/stable27/vue/vue2-jest-29.2.6 2023-09-09 09:28:36 +02:00
Julius Härtl
e1413b1c1e Merge pull request #5111 from nextcloud/dependabot/npm_and_yarn/stable27/url-search-params-polyfill-8.2.5 2023-09-09 09:28:24 +02:00
Julius Härtl
f37258a85d Merge pull request #5108 from nextcloud/dependabot/npm_and_yarn/stable27/p-queue-7.4.1 2023-09-09 09:08:29 +02:00
dependabot[bot]
9dad72f8d4 Chore(deps): Bump url-search-params-polyfill from 8.2.4 to 8.2.5
Bumps [url-search-params-polyfill](https://github.com/jerrybendy/url-search-params-polyfill) from 8.2.4 to 8.2.5.
- [Release notes](https://github.com/jerrybendy/url-search-params-polyfill/releases)
- [Commits](https://github.com/jerrybendy/url-search-params-polyfill/commits)

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

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

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

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

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-09 01:33:19 +00:00
Nextcloud bot
582d5045f9 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-09-09 00:42:01 +00:00
Nextcloud bot
66e3ca55a6 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-09-07 00:45:17 +00:00
Julius Härtl
3f1418749b Merge pull request #5078 from nextcloud/dependabot/npm_and_yarn/stable27/p-queue-7.4.0 2023-09-04 08:40:39 +02:00
dependabot[bot]
5617f0f290 Chore(deps): Bump p-queue from 7.3.4 to 7.4.0
Bumps [p-queue](https://github.com/sindresorhus/p-queue) from 7.3.4 to 7.4.0.
- [Release notes](https://github.com/sindresorhus/p-queue/releases)
- [Commits](https://github.com/sindresorhus/p-queue/compare/v7.3.4...v7.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-02 01:53:05 +00:00
Nextcloud bot
87318087a6 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-09-02 00:42:35 +00:00
Nextcloud bot
67e839017d Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-09-01 00:45:52 +00:00
Nextcloud bot
3de219d48c Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-31 00:50:51 +00:00
Nextcloud bot
68232ec293 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-30 00:47:49 +00:00
Julius Härtl
e402284366 Merge pull request #5072 from nextcloud/backport/5047/stable27 2023-08-28 08:56:46 +02:00
Luka Trovic
1dffc29338 feat: update smart picker links
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2023-08-28 06:38:40 +00:00
Julius Härtl
d8623b0aa5 Merge pull request #5060 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/vue-7.12.4 2023-08-28 08:37:46 +02:00
Julius Härtl
9686ee8ed9 Merge pull request #5054 from nextcloud/dependabot/npm_and_yarn/stable27/babel/runtime-7.22.11 2023-08-28 08:34:31 +02:00
Julius Härtl
ea6182c289 Merge pull request #5055 from nextcloud/dependabot/npm_and_yarn/stable27/jest-29.6.4 2023-08-28 08:34:21 +02:00
Julius Härtl
69254008c6 Merge pull request #5057 from nextcloud/dependabot/npm_and_yarn/stable27/relative-ci/agent-4.1.8 2023-08-28 08:31:28 +02:00
Nextcloud bot
eb17f3b466 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-28 00:42:44 +00:00
dependabot[bot]
5f4cf248ef Chore(deps): Bump @nextcloud/vue from 7.12.2 to 7.12.4
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.12.2 to 7.12.4.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-vue/blob/v7.12.4/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v7.12.2...v7.12.4)

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-26 01:11:25 +00:00
dependabot[bot]
42e7818d87 Chore(deps-dev): Bump jest from 29.6.2 to 29.6.4
Bumps [jest](https://github.com/jestjs/jest/tree/HEAD/packages/jest) from 29.6.2 to 29.6.4.
- [Release notes](https://github.com/jestjs/jest/releases)
- [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jestjs/jest/commits/v29.6.4/packages/jest)

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-26 01:10:52 +00:00
Nextcloud bot
203befc219 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-26 00:48:42 +00:00
Nextcloud bot
dd24eab75d Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-25 00:52:07 +00:00
Julius Härtl
1195acc523 Merge pull request #5049 from nextcloud/backport/5046/stable27 2023-08-24 16:40:07 +02:00
Luka Trovic
ef5dcc5c52 feat: remember last board, list for new card dialog
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2023-08-24 13:47:56 +00:00
Nextcloud bot
8fe2cab239 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-24 01:17:42 +00:00
Nextcloud bot
aefeb93ee0 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-23 00:44:36 +00:00
Julius Härtl
7dbde8e3d3 Merge pull request #5043 from nextcloud/backport/4850/stable27 2023-08-22 08:12:29 +02:00
Git'Fellow
35440c41c7 Remove duplicate button
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2023-08-22 05:54:36 +00:00
dependabot[bot]
c893ee6586 Merge pull request #5036 from nextcloud/dependabot/npm_and_yarn/stable27/cypress-12.17.4 2023-08-19 02:58:36 +00:00
dependabot[bot]
ba88ee898d Chore(deps-dev): Bump cypress from 12.17.3 to 12.17.4
Bumps [cypress](https://github.com/cypress-io/cypress) from 12.17.3 to 12.17.4.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.17.3...v12.17.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-19 01:17:52 +00:00
Julius Härtl
a6526b1072 Merge pull request #5027 from nextcloud/cypress/filepicker-27 2023-08-18 18:54:13 +02:00
Nextcloud bot
b1b3c6b779 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-18 00:51:56 +00:00
Julius Härtl
293ad83476 Merge pull request #5030 from nextcloud/backport/5029/stable27 2023-08-16 21:29:20 +02:00
Luka Trovic
ceea3ab007 feat: error msg on CreateNewCardCustomPicker & only show available boards
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2023-08-16 19:04:04 +00:00
Nextcloud bot
5592f2557d Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-16 00:41:39 +00:00
Nextcloud bot
5b22c3b841 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-15 01:16:02 +00:00
Julius Härtl
d1b77cb541 Merge pull request #5024 from nextcloud/automated/noid/stable27-fix-npm-audit 2023-08-14 10:06:54 +02:00
Julius Härtl
680595e5ca Merge pull request #5026 from nextcloud/backport/5025/stable27 2023-08-14 09:57:25 +02:00
Julius Härtl
ad6d3bf29c ci(cypress): Fix selectors for new file picker
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-14 09:56:48 +02:00
Luka Trovic
b738161b1f test: add cypress tests for create new deck card
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2023-08-14 07:44:46 +00:00
Nextcloud bot
2ac6df3846 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-14 00:41:50 +00:00
nextcloud-command
d195f2a12c chore(deps): fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2023-08-13 03:01:42 +00:00
Julius Härtl
e926a0a6d0 chore(release): Bump version to 1.11.0-beta.1
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-12 10:26:56 +02:00
Julius Härtl
2336e63459 Merge pull request #5016 from nextcloud/dependabot/npm_and_yarn/stable27/babel/runtime-7.22.10 2023-08-12 10:02:07 +02:00
Julius Härtl
4719cea172 Merge pull request #5017 from nextcloud/dependabot/npm_and_yarn/stable27/vue/vue2-jest-29.2.5 2023-08-12 10:01:59 +02:00
Julius Härtl
dc9b2b5c7f Merge pull request #5003 from nextcloud/backport/4939/stable27 2023-08-12 10:01:24 +02:00
Julius Härtl
4881de7bfe ci(cypress): Catch resize observer loop limit (2)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-12 09:27:18 +02:00
Julius Härtl
84c8d70eef ci(cypress): Catch resize observer loop limit
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-12 09:14:43 +02:00
Julius Härtl
3da4e2498f fix: use proper owner source
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-12 09:11:31 +02:00
Julius Härtl
bbb69789f2 Merge pull request #5019 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/vue-7.12.2 2023-08-12 08:55:28 +02:00
Julius Härtl
8e21035ba2 Merge pull request #5018 from nextcloud/dependabot/npm_and_yarn/stable27/eslint-plugin-cypress-2.14.0 2023-08-12 08:55:16 +02:00
dependabot[bot]
a5a3d0aa45 Chore(deps): Bump @nextcloud/vue from 7.12.1 to 7.12.2
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.12.1 to 7.12.2.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-vue/blob/v7.12.2/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v7.12.1...v7.12.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-12 02:07:21 +00:00
dependabot[bot]
e8e1630ed6 Chore(deps-dev): Bump eslint-plugin-cypress from 2.13.3 to 2.14.0
Bumps [eslint-plugin-cypress](https://github.com/cypress-io/eslint-plugin-cypress) from 2.13.3 to 2.14.0.
- [Release notes](https://github.com/cypress-io/eslint-plugin-cypress/releases)
- [Commits](https://github.com/cypress-io/eslint-plugin-cypress/compare/v2.13.3...v2.14.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-12 02:06:54 +00:00
dependabot[bot]
07c9c276ee Chore(deps-dev): Bump @vue/vue2-jest from 29.2.4 to 29.2.5
Bumps [@vue/vue2-jest](https://github.com/vuejs/vue-jest) from 29.2.4 to 29.2.5.
- [Release notes](https://github.com/vuejs/vue-jest/releases)
- [Commits](https://github.com/vuejs/vue-jest/compare/v29.2.4...v29.2.5)

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-12 02:06:33 +00:00
Nextcloud bot
3a2ac7abc2 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-12 00:43:17 +00:00
Julius Härtl
beafcfa743 style: fix php-cs
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 19:48:22 +02:00
Julius Härtl
1881010b7a tests: ignore version of stored json for import tests
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 19:48:03 +02:00
Julius Härtl
07ba4b2e4a fix: Only map owner for user mapping
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 19:37:00 +02:00
Julius Härtl
a8466d1426 chore: Cleanup some outdated fixme comments
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 19:37:00 +02:00
Julius Härtl
b0af2fef2d fix: Map card assignments through mapping config
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 19:37:00 +02:00
Julius Härtl
8feeb7005d fix: Add output for individual failures or skipped parts
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 19:36:59 +02:00
Julius Härtl
0af05d62b7 tests: assert json diff between import/export
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 19:36:59 +02:00
Julius Härtl
4b9bae2753 fix: Do not fail on missing owner details
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 19:36:59 +02:00
Julius Härtl
cc9750ace7 fix: Only set last modified if not already set manually
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 19:36:59 +02:00
Julius Härtl
8cabd6001e fix: Avoid duplicate data on board export
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 19:36:59 +02:00
Julius Härtl
73c6487798 test: Add reimport test case
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 19:36:59 +02:00
Julius Härtl
5f4c4cdce7 fix: request full details for board export
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 19:36:58 +02:00
Julius Härtl
e48a1c6a94 draft: todos
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 19:36:58 +02:00
Julius Härtl
e2ac4df537 feat: Let occ deck:import default to deck json importer
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 19:36:58 +02:00
Julius Härtl
ab8d4b8432 docs: Add dedicated documentation section for import/export
Signed-off-by: Julius Härtl <jus@bitgrid.net>

docs: Update import docs

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 19:36:58 +02:00
Julius Härtl
6318a314c1 test: Add example test data for deck import
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 19:36:58 +02:00
Julius Härtl
fb7f316b26 test: Add some basic integration test skeleton for import
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 19:36:58 +02:00
Julius Härtl
7a4ae5fa2c feat: Add app version to the deck app export
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 19:36:54 +02:00
Julius Härtl
4c05c4039b feat: Implement logic to import multiple boards
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 19:29:38 +02:00
Max
c683044d2c WIP: enh(import): import deck json exports
Signed-off-by: Max <max@nextcloud.com>
2023-08-11 19:29:38 +02:00
Julius Härtl
b381588199 fix: Avoid failing due to uninitialized acces of systemInstance
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 19:29:38 +02:00
Julius Härtl
4e4da92ad6 fix: Properly export cards as a child element of the related stack
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-11 19:29:37 +02:00
Nextcloud bot
22fb404774 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-11 00:45:41 +00:00
dependabot[bot]
2984c71d32 Merge pull request #4980 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/stylelint-config-2.3.1 2023-08-10 20:44:58 +00:00
dependabot[bot]
9824c578ad Chore(deps-dev): Bump @nextcloud/stylelint-config from 2.3.0 to 2.3.1
Bumps [@nextcloud/stylelint-config](https://github.com/nextcloud/stylelint-config) from 2.3.0 to 2.3.1.
- [Release notes](https://github.com/nextcloud/stylelint-config/releases)
- [Changelog](https://github.com/nextcloud-libraries/stylelint-config/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/stylelint-config/compare/v2.3.0...v2.3.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-10 22:36:48 +02:00
Nextcloud bot
ca3c93fed8 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-10 00:43:07 +00:00
Julius Härtl
3912b3c3ae chore: Bump version to 1.11.0-dev0
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-09 18:56:35 +02:00
Julius Härtl
0f8a6c0d25 Merge pull request #5000 from nextcloud/backport/4969/stable27 2023-08-09 15:04:08 +02:00
Julius Härtl
2f349e0138 fix: Force auto width
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-09 14:46:30 +02:00
Julius Härtl
9aded3ccb8 chore: Add LoadEditor event to psalm stubs
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-09 14:46:30 +02:00
Julius Härtl
a32b3cd3cf fix: Add missing scss file
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-09 12:02:38 +00:00
Julius Härtl
731a491bd1 fix: Load editor on reference pickers for card create dialog
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-09 12:02:38 +00:00
Julius Härtl
9542dde184 fix: Also detect reference to simple card urls
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-08-09 12:02:38 +00:00
Luka Trovic
1cd5f2f496 feat: create new card from smart picker
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2023-08-09 12:02:38 +00:00
Nextcloud bot
4d10663406 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-09 01:06:05 +00:00
Nextcloud bot
ff75b39aca Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-08 00:46:19 +00:00
Julius Härtl
62e06a0d24 Merge pull request #4995 from nextcloud/automated/noid/stable27-fix-npm-audit 2023-08-06 11:54:56 +02:00
nextcloud-command
54be05e448 chore(deps): fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2023-08-06 03:29:46 +00:00
Nextcloud bot
ab6ae1df0d Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-06 00:41:20 +00:00
dependabot[bot]
d3d1e0af36 Merge pull request #4979 from nextcloud/dependabot/npm_and_yarn/stable27/jest-29.6.2 2023-08-05 03:38:11 +00:00
dependabot[bot]
59e0ffaf05 Merge pull request #4978 from nextcloud/dependabot/npm_and_yarn/stable27/cypress-12.17.3 2023-08-05 03:35:10 +00:00
dependabot[bot]
4287bde8ce Merge pull request #4977 from nextcloud/dependabot/npm_and_yarn/stable27/relative-ci/agent-4.1.6 2023-08-05 03:32:44 +00:00
dependabot[bot]
70917f3f65 Chore(deps-dev): Bump jest from 29.6.1 to 29.6.2
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 29.6.1 to 29.6.2.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v29.6.2/packages/jest)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-05 02:12:10 +00:00
dependabot[bot]
ade0554c70 Chore(deps-dev): Bump cypress from 12.17.2 to 12.17.3
Bumps [cypress](https://github.com/cypress-io/cypress) from 12.17.2 to 12.17.3.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.17.2...v12.17.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-05 02:11:35 +00:00
dependabot[bot]
32d4179bdc Chore(deps-dev): Bump @relative-ci/agent from 4.1.5 to 4.1.6
Bumps [@relative-ci/agent](https://github.com/relative-ci/agent) from 4.1.5 to 4.1.6.
- [Release notes](https://github.com/relative-ci/agent/releases)
- [Commits](https://github.com/relative-ci/agent/compare/v4.1.5...v4.1.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-05 02:11:16 +00:00
Nextcloud bot
81e567b680 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-04 00:46:30 +00:00
Nextcloud bot
5819a19a88 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-08-02 01:09:04 +00:00
Nextcloud bot
188d722bf2 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-30 00:41:12 +00:00
Julius Härtl
a6e09adf77 Merge pull request #4949 from nextcloud/backport/4906/stable27 2023-07-24 18:12:53 +02:00
Julius Härtl
4fe38c62dd fix: Split query to fetch board ids to avoid slow query join
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-07-24 17:38:37 +02:00
Julius Härtl
eec4e614bd ci: Update integration.yml to work on self-hosted runners
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-07-24 17:36:56 +02:00
Julius Härtl
6714e18889 Merge pull request #4957 from nextcloud/automated/noid/stable27-fix-npm-audit 2023-07-23 20:43:48 +02:00
nextcloud-command
275e8eedaf chore(deps): fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2023-07-23 03:19:46 +00:00
dependabot[bot]
f921f5d5a6 Merge pull request #4952 from nextcloud/dependabot/npm_and_yarn/stable27/cypress-12.17.2 2023-07-22 01:30:06 +00:00
dependabot[bot]
856aeb146d Chore(deps-dev): Bump cypress from 12.17.1 to 12.17.2
Bumps [cypress](https://github.com/cypress-io/cypress) from 12.17.1 to 12.17.2.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.17.1...v12.17.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-22 01:17:28 +00:00
Nextcloud bot
0c1ef382aa Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-19 00:41:19 +00:00
Nextcloud bot
36fac54f0f Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-18 00:38:53 +00:00
Nextcloud bot
498ab8bd0d Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-16 00:39:21 +00:00
dependabot[bot]
9947aa4288 Merge pull request #4918 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/initial-state-2.1.0 2023-07-15 03:47:47 +00:00
dependabot[bot]
754903ccca Merge pull request #4917 from nextcloud/dependabot/npm_and_yarn/stable27/dompurify-3.0.5 2023-07-15 03:46:57 +00:00
dependabot[bot]
13d5289e73 Merge pull request #4916 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/vue-7.12.1 2023-07-15 03:39:54 +00:00
dependabot[bot]
06ccb7b7b9 Merge pull request #4914 from nextcloud/dependabot/npm_and_yarn/stable27/cypress-12.17.1 2023-07-15 03:36:05 +00:00
dependabot[bot]
91c0704186 Chore(deps): Bump @nextcloud/initial-state from 2.0.0 to 2.1.0
Bumps [@nextcloud/initial-state](https://github.com/nextcloud/nextcloud-initial-state) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/nextcloud/nextcloud-initial-state/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-initial-state/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-initial-state/compare/v2.0.0...v2.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-15 01:11:58 +00:00
dependabot[bot]
228a2bdca9 Chore(deps): Bump dompurify from 3.0.4 to 3.0.5
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.0.4 to 3.0.5.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.0.4...3.0.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-15 01:11:46 +00:00
dependabot[bot]
9e23a89659 Chore(deps): Bump @nextcloud/vue from 7.12.0 to 7.12.1
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.12.0 to 7.12.1.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-vue/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v7.12.0...v7.12.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-15 01:11:34 +00:00
dependabot[bot]
5619c683c2 Chore(deps-dev): Bump cypress from 12.17.0 to 12.17.1
Bumps [cypress](https://github.com/cypress-io/cypress) from 12.17.0 to 12.17.1.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.17.0...v12.17.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-15 01:10:50 +00:00
Julius Härtl
ca347cbc80 Merge pull request #4909 from nextcloud/backport/4908/stable27 2023-07-14 08:52:29 +02:00
Joas Schilling
19a4832caf fix(notification): Prevent null in parameters
Signed-off-by: Joas Schilling <coding@schilljs.com>
2023-07-14 06:25:51 +00:00
Nextcloud bot
9f0783c4c6 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-14 00:44:27 +00:00
Nextcloud bot
6e5111b266 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-13 00:44:45 +00:00
Nextcloud bot
bed3096f11 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-12 00:36:30 +00:00
Nextcloud bot
9538cccf50 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-11 00:47:40 +00:00
Julius Härtl
6a3c242176 Merge pull request #4873 from nextcloud/automated/noid/stable27-fix-npm-audit 2023-07-10 12:31:19 +02:00
Nextcloud bot
93959b0efc Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-10 00:44:06 +00:00
nextcloud-command
99a42e7639 chore(deps): fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2023-07-09 03:53:39 +00:00
dependabot[bot]
ed02d93a92 Merge pull request #4882 from nextcloud/dependabot/npm_and_yarn/stable27/cypress-12.17.0 2023-07-08 01:15:04 +00:00
dependabot[bot]
1dce8b797d Merge pull request #4880 from nextcloud/dependabot/npm_and_yarn/stable27/url-search-params-polyfill-8.2.4 2023-07-08 01:14:57 +00:00
dependabot[bot]
5d17c3167b Merge pull request #4879 from nextcloud/dependabot/npm_and_yarn/stable27/babel/runtime-7.22.6 2023-07-08 01:14:43 +00:00
dependabot[bot]
e0d59c0653 Merge pull request #4883 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/axios-2.4.0 2023-07-08 01:12:11 +00:00
dependabot[bot]
0308599096 Merge pull request #4881 from nextcloud/dependabot/npm_and_yarn/stable27/jest-29.6.1 2023-07-08 01:11:56 +00:00
dependabot[bot]
00e1a1da74 Chore(deps): Bump @nextcloud/axios from 2.3.0 to 2.4.0
Bumps [@nextcloud/axios](https://github.com/nextcloud/nextcloud-axios) from 2.3.0 to 2.4.0.
- [Release notes](https://github.com/nextcloud/nextcloud-axios/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-axios/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-axios/compare/v2.3.0...v2.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-08 01:05:31 +00:00
dependabot[bot]
5783d9ec15 Chore(deps-dev): Bump cypress from 12.16.0 to 12.17.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 12.16.0 to 12.17.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.16.0...v12.17.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-08 01:05:14 +00:00
dependabot[bot]
01b4a4d264 Chore(deps-dev): Bump jest from 29.5.0 to 29.6.1
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 29.5.0 to 29.6.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v29.6.1/packages/jest)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-08 01:04:37 +00:00
dependabot[bot]
fbc703b033 Chore(deps): Bump url-search-params-polyfill from 8.2.3 to 8.2.4
Bumps [url-search-params-polyfill](https://github.com/jerrybendy/url-search-params-polyfill) from 8.2.3 to 8.2.4.
- [Release notes](https://github.com/jerrybendy/url-search-params-polyfill/releases)
- [Commits](https://github.com/jerrybendy/url-search-params-polyfill/commits/v8.2.4)

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-08 01:04:04 +00:00
Nextcloud bot
3dc99f129c Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-08 00:45:02 +00:00
Nextcloud bot
11a5362108 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-07 00:42:27 +00:00
Nextcloud bot
18343eea89 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-07-06 00:45:28 +00:00
dependabot[bot]
6ceb1b3e09 Merge pull request #4864 from nextcloud/dependabot/npm_and_yarn/stable27/cypress-12.16.0 2023-07-01 02:35:39 +00:00
dependabot[bot]
e5873c566b Merge pull request #4862 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/l10n-2.2.0 2023-07-01 02:24:41 +00:00
dependabot[bot]
93f9db2549 Merge pull request #4863 from nextcloud/dependabot/npm_and_yarn/stable27/dompurify-3.0.4 2023-07-01 02:07:44 +00:00
dependabot[bot]
de78de243f Chore(deps-dev): Bump cypress from 12.15.0 to 12.16.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 12.15.0 to 12.16.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.15.0...v12.16.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-01 01:09:10 +00:00
dependabot[bot]
e82ba2aebc Chore(deps): Bump dompurify from 3.0.3 to 3.0.4
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.0.3 to 3.0.4.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.0.3...3.0.4)

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-01 01:08:34 +00:00
Nextcloud bot
697d2ce8d5 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-30 00:44:06 +00:00
Nextcloud bot
90e986dfc1 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-28 00:46:04 +00:00
Nextcloud bot
6e844b22fd Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-27 00:47:14 +00:00
Nextcloud bot
9ecafadc43 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-26 00:42:53 +00:00
Julius Härtl
08a9714842 Merge pull request #4853 from nextcloud/automated/noid/stable27-fix-npm-audit 2023-06-25 12:31:35 +02:00
nextcloud-command
ed50c9413c chore(deps): fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2023-06-25 03:59:37 +00:00
Julius Härtl
b0c026bc83 Merge pull request #4842 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/dialogs-4.1.0 2023-06-24 12:53:51 +02:00
dependabot[bot]
2adec18b1d Merge pull request #4848 from nextcloud/dependabot/npm_and_yarn/stable27/relative-ci/agent-4.1.5 2023-06-24 03:54:19 +00:00
dependabot[bot]
30371b0e06 Chore(deps-dev): Bump @relative-ci/agent from 4.1.4 to 4.1.5
Bumps [@relative-ci/agent](https://github.com/relative-ci/agent) from 4.1.4 to 4.1.5.
- [Release notes](https://github.com/relative-ci/agent/releases)
- [Commits](https://github.com/relative-ci/agent/compare/v4.1.4...v4.1.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-24 03:45:22 +00:00
dependabot[bot]
afc0c662d2 Merge pull request #4840 from nextcloud/dependabot/npm_and_yarn/stable27/cypress-12.15.0 2023-06-24 03:31:41 +00:00
dependabot[bot]
146a5eb602 Chore(deps): Bump @nextcloud/dialogs from 4.0.1 to 4.1.0
Bumps [@nextcloud/dialogs](https://github.com/nextcloud/nextcloud-dialogs) from 4.0.1 to 4.1.0.
- [Release notes](https://github.com/nextcloud/nextcloud-dialogs/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-dialogs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-dialogs/compare/v4.0.1...v4.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-24 02:57:11 +00:00
dependabot[bot]
317ee4901b Chore(deps-dev): Bump cypress from 12.14.0 to 12.15.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 12.14.0 to 12.15.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.14.0...v12.15.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-24 01:57:49 +00:00
Nextcloud bot
3d254f7d62 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-24 00:40:44 +00:00
Nextcloud bot
948b8f5f84 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-23 01:12:43 +00:00
Julius Härtl
d555bf1cab Merge pull request #4831 from nextcloud/backport/4816/stable27 2023-06-20 11:15:39 +02:00
Max
0456e43378 fix: crash when leaving out system parameter
The `--system` parameter can be supplied via command line
or selected afterwards.

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

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

Signed-off-by: Max <max@nextcloud.com>
2023-06-20 08:48:43 +00:00
Nextcloud bot
5cf3f48de9 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-20 00:38:11 +00:00
dependabot[bot]
32b4b18868 Merge pull request #4822 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/router-2.1.2 2023-06-17 03:42:55 +00:00
dependabot[bot]
ec937a8edf Chore(deps): Bump @nextcloud/router from 2.1.1 to 2.1.2
Bumps [@nextcloud/router](https://github.com/nextcloud/nextcloud-router) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/nextcloud/nextcloud-router/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-router/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-router/compare/v2.1.1...v2.1.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-17 01:57:40 +00:00
Nextcloud bot
33dae40326 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-17 00:32:04 +00:00
Nextcloud bot
d032f8a820 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-16 00:32:02 +00:00
Nextcloud bot
4b20bfca74 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-15 00:32:05 +00:00
Julius Härtl
e29eb22a49 Merge pull request #4811 from nextcloud/backport/4809/stable27 2023-06-14 16:17:38 +02:00
Julius Härtl
b125e18c52 Merge pull request #4813 from nextcloud/backport/4810/stable27 2023-06-14 16:17:20 +02:00
Max
736222f975 Fix(occ): set user id for permission sevice from board service
Fixes #4010.

Signed-off-by: Max <max@nextcloud.com>
2023-06-14 10:30:53 +00:00
Max
2b33583bd7 fix: execute return int for export command
Signed-off-by: Max <max@nextcloud.com>
2023-06-14 10:29:49 +00:00
Nextcloud bot
b77cb9b270 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-14 00:32:17 +00:00
Nextcloud bot
1c116012ce Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-13 00:32:39 +00:00
Julius Härtl
d7fa2ae265 Merge pull request #4804 from nextcloud/backport/4772/stable27 2023-06-12 12:31:52 +02:00
Julius Härtl
3c407c06ff Merge pull request #4771 from nextcloud/release/1.10.0 2023-06-12 10:53:33 +02:00
Julius Härtl
3fdb70e547 fix: Allow dynamic autoloading for classes added during upgrade
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-06-12 08:14:19 +00:00
Julius Härtl
febd4b1a0b Merge pull request #4800 from nextcloud/automated/noid/stable27-fix-npm-audit 2023-06-12 09:12:54 +02:00
nextcloud-command
12c3e476f9 chore(deps): fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2023-06-11 03:36:39 +00:00
Nextcloud bot
ec8c782b5a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-11 00:52:40 +00:00
Julius Härtl
0575926692 Merge pull request #4781 from nextcloud/dependabot/npm_and_yarn/stable27/url-search-params-polyfill-8.2.3 2023-06-10 12:48:48 +02:00
dependabot[bot]
617671c004 Merge pull request #4792 from nextcloud/dependabot/npm_and_yarn/stable27/cypress-12.14.0 2023-06-10 04:58:49 +00:00
dependabot[bot]
2f9cf4df37 Merge pull request #4778 from nextcloud/dependabot/npm_and_yarn/stable27/vue/test-utils-1.3.6 2023-06-10 03:43:39 +00:00
dependabot[bot]
7e5e0e2814 Chore(deps-dev): Bump cypress from 12.13.0 to 12.14.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 12.13.0 to 12.14.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.13.0...v12.14.0)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -22,7 +22,7 @@ concurrency:
jobs:
auto-approve-merge:
if: github.actor == 'dependabot[bot]'
runs-on: ubuntu-latest-low
runs-on: ubuntu-latest
permissions:
# for hmarr/auto-approve-action to approve PRs
pull-requests: write

View File

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

View File

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

View File

@@ -6,9 +6,22 @@
# Use lint-eslint together with lint-eslint-when-unrelated to make eslint a required check for GitHub actions
# https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks#handling-skipped-but-required-checks
name: Lint eslint
name: Lint
on: pull_request
on:
pull_request:
paths:
- '.github/workflows/**'
- 'src/**'
- 'appinfo/info.xml'
- 'package.json'
- 'package-lock.json'
- 'tsconfig.json'
- '.eslintrc.*'
- '.eslintignore'
- '**.js'
- '**.ts'
- '**.vue'
permissions:
contents: read
@@ -18,52 +31,24 @@ concurrency:
cancel-in-progress: true
jobs:
changes:
runs-on: ubuntu-latest-low
outputs:
src: ${{ steps.changes.outputs.src}}
steps:
- uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0
id: changes
continue-on-error: true
with:
filters: |
src:
- '.github/workflows/**'
- 'src/**'
- 'appinfo/info.xml'
- 'package.json'
- 'package-lock.json'
- 'tsconfig.json'
- '.eslintrc.*'
- '.eslintignore'
- '**.js'
- '**.ts'
- '**.vue'
lint:
runs-on: ubuntu-latest
needs: changes
if: needs.changes.outputs.src != 'false'
name: NPM lint
name: eslint
steps:
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
uses: skjnldsv/read-package-engines-version-actions@0ce2ed60f6df073a62a77c0a4958dd0fc68e32e7 # v2.1
id: versions
with:
fallbackNode: '^20'
fallbackNpm: '^10'
fallbackNode: '^16'
fallbackNpm: '^7'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v3
uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # v3
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
@@ -71,25 +56,7 @@ jobs:
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
- name: Install dependencies
env:
CYPRESS_INSTALL_BINARY: 0
PUPPETEER_SKIP_DOWNLOAD: true
run: npm ci
- name: Lint
run: npm run lint
summary:
permissions:
contents: none
runs-on: ubuntu-latest-low
needs: [changes, lint]
if: always()
# This is the summary, we just avoid to rename it so that branch protection rules still match
name: eslint
steps:
- name: Summary status
run: if ${{ needs.changes.outputs.src != 'false' && needs.lint.result != 'success' }}; then exit 1; fi

View File

@@ -3,7 +3,7 @@
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
name: Lint php-cs
name: Lint
on: pull_request
@@ -22,15 +22,13 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
- name: Set up php8.2
uses: shivammathur/setup-php@6d7209f44a25a59e904b1ee9f3b0c33ab2cd888d # v2
- name: Set up php
uses: shivammathur/setup-php@2.25.1 # v2
with:
php-version: 8.2
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
php-version: 8.1
coverage: none
ini-file: development
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -3,9 +3,15 @@
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
name: Lint php
name: Lint
on: pull_request
on:
pull_request:
push:
branches:
- main
- master
- stable*
permissions:
contents: read
@@ -19,21 +25,19 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: [ '8.0', '8.1', '8.2', '8.3' ]
php-versions: [ "8.0", "8.1", "8.2" ]
name: php-lint
steps:
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@6d7209f44a25a59e904b1ee9f3b0c33ab2cd888d # v2
uses: shivammathur/setup-php@2.25.1 # v2
with:
php-version: ${{ matrix.php-versions }}
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
coverage: none
ini-file: development
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -43,7 +47,7 @@ jobs:
summary:
permissions:
contents: none
runs-on: ubuntu-latest-low
runs-on: ubuntu-latest
needs: php-lint
if: always()

View File

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

64
.github/workflows/nightly.yml vendored Normal file
View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -5,7 +5,13 @@
name: Static analysis
on: pull_request
on:
pull_request:
push:
branches:
- master
- main
- stable*
concurrency:
group: psalm-${{ github.head_ref || github.run_id }}
@@ -15,18 +21,16 @@ jobs:
static-analysis:
runs-on: ubuntu-latest
name: static-psalm-analysis
name: Nextcloud
steps:
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
- name: Set up php8.2
uses: shivammathur/setup-php@6d7209f44a25a59e904b1ee9f3b0c33ab2cd888d # v2
- name: Set up php
uses: shivammathur/setup-php@2.25.1 # v2
with:
php-version: 8.2
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
php-version: 8.1
coverage: none
ini-file: development
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

460
composer.lock generated
View File

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

View File

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

View File

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

View File

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

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

View File

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

View File

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

View File

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

View File

@@ -1,84 +0,0 @@
<?php
/**
* @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>
*
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Deck\Activity;
class SettingChanges extends SettingBase {
/**
* @return string Lowercase a-z and underscore only identifier
* @since 11.0.0
*/
public function getIdentifier(): string {
return 'deck';
}
/**
* @return string A translated string
* @since 11.0.0
*/
public function getName(): string {
return $this->l->t('A <strong>board, list or card</strong> was changed');
}
/**
* @return int whether the filter should be rather on the top or bottom of
* the admin section. The filters are arranged in ascending order of the
* priority values. It is required to return a value between 0 and 100.
* @since 11.0.0
*/
public function getPriority(): int {
return 90;
}
/**
* @return bool True when the option can be changed for the stream
* @since 11.0.0
*/
public function canChangeStream(): bool {
return true;
}
/**
* @return bool True when the option can be changed for the stream
* @since 11.0.0
*/
public function isDefaultEnabledStream(): bool {
return true;
}
/**
* @return bool True when the option can be changed for the mail
* @since 11.0.0
*/
public function canChangeMail(): bool {
return true;
}
/**
* @return bool True when the option can be changed for the stream
* @since 11.0.0
*/
public function isDefaultEnabledMail(): bool {
return false;
}
}

View File

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

View File

@@ -30,9 +30,7 @@ use OCA\Deck\Activity\CommentEventHandler;
use OCA\Deck\Capabilities;
use OCA\Deck\Collaboration\Resources\ResourceProvider;
use OCA\Deck\Collaboration\Resources\ResourceProviderCard;
use OCA\Deck\Dashboard\DeckWidgetToday;
use OCA\Deck\Dashboard\DeckWidgetTomorrow;
use OCA\Deck\Dashboard\DeckWidgetUpcoming;
use OCA\Deck\Dashboard\DeckWidget;
use OCA\Deck\Db\Acl;
use OCA\Deck\Db\CardMapper;
use OCA\Deck\Event\AclCreatedEvent;
@@ -137,9 +135,7 @@ class Application extends App implements IBootstrap {
$context->registerSearchProvider(DeckProvider::class);
$context->registerSearchProvider(CardCommentProvider::class);
$context->registerDashboardWidget(DeckWidgetUpcoming::class);
$context->registerDashboardWidget(DeckWidgetToday::class);
$context->registerDashboardWidget(DeckWidgetTomorrow::class);
$context->registerDashboardWidget(DeckWidget::class);
$context->registerReferenceProvider(CreateCardReferenceProvider::class);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,85 +0,0 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>
*
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Deck\Dashboard;
use OCP\Dashboard\IWidget;
use OCP\IL10N;
class DeckWidgetToday implements IWidget {
/**
*
* @var IL10N
*/
private $l10n;
public function __construct(IL10N $l10n) {
$this->l10n = $l10n;
}
/**
* @inheritDoc
*/
public function getId(): string {
return 'deckToday';
}
/**
* @inheritDoc
*/
public function getTitle(): string {
return $this->l10n->t('Cards due today');
}
/**
* @inheritDoc
*/
public function getOrder(): int {
return 20;
}
/**
* @inheritDoc
*/
public function getIconClass(): string {
return 'icon-deck';
}
/**
* @inheritDoc
*/
public function getUrl(): ?string {
return null;
}
/**
* @inheritDoc
*/
public function load(): void {
\OCP\Util::addScript('deck', 'deck-dashboard');
}
}

View File

@@ -1,85 +0,0 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>
*
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Deck\Dashboard;
use OCP\Dashboard\IWidget;
use OCP\IL10N;
class DeckWidgetTomorrow implements IWidget {
/**
*
* @var IL10N
*/
private $l10n;
public function __construct(IL10N $l10n) {
$this->l10n = $l10n;
}
/**
* @inheritDoc
*/
public function getId(): string {
return 'deckTomorrow';
}
/**
* @inheritDoc
*/
public function getTitle(): string {
return $this->l10n->t('Cards due tomorrow');
}
/**
* @inheritDoc
*/
public function getOrder(): int {
return 20;
}
/**
* @inheritDoc
*/
public function getIconClass(): string {
return 'icon-deck';
}
/**
* @inheritDoc
*/
public function getUrl(): ?string {
return null;
}
/**
* @inheritDoc
*/
public function load(): void {
\OCP\Util::addScript('deck', 'deck-dashboard');
}
}

View File

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

View File

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

View File

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

View File

@@ -1,61 +0,0 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2023 Thanos kamber <thanos.kamber@gmail.com>
*
* @author Thanos kamber <thanos.kamber@gmail.com>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Deck\Migration;
use Closure;
use OCP\DB\ISchemaWrapper;
use OCP\DB\Types;
use OCP\Migration\IOutput;
use OCP\Migration\SimpleMigrationStep;
/**
* Auto-generated migration step: Please modify to your needs!
*/
class Version1011Date20230901010840 extends SimpleMigrationStep {
/**
* @param IOutput $output
* @param Closure $schemaClosure
* @param array $options
* @return null|ISchemaWrapper
*/
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
$table = $schema->getTable('deck_cards');
if (!$table->hasColumn('done')) {
$table->addColumn('done', Types::DATETIME, [
'default' => null,
'notnull' => false,
]);
return $schema;
}
return null;
}
}

View File

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

View File

@@ -1,51 +0,0 @@
<?php
/**
* @copyright Copyright (c) 2023 Julius Härtl <jus@bitgrid.net>
*
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
namespace OCA\Deck\Model;
/**
* This is a helper abstraction to allow usage of optional parameters
* which hold a nullable value. The actual null value of the parameter
* is used to indicate if it has been set or not. The containing value
* will then still allow having null as a value
*
* Example use case: Have a nullable database column,
* but only update it if it is passed
*
* @template T
*/
class OptionalNullableValue {
/** @var ?T */
private mixed $value;
/** @param ?T $value */
public function __construct(mixed $value) {
$this->value = $value;
}
/** @return ?T */
public function getValue(): mixed {
return $this->value;
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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

View File

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

View File

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

View File

@@ -1,107 +0,0 @@
<template>
<NcModal v-if="modalShow" :title="t('deck', 'Move card to another board')" @close="modalShow=false">
<div class="modal__content">
<h3>{{ t('deck', 'Move card to another board') }}</h3>
<NcMultiselect v-model="selectedBoard"
:placeholder="t('deck', 'Select a board')"
:options="activeBoards"
:max-height="100"
label="title"
@select="loadStacksFromBoard" />
<NcMultiselect v-model="selectedStack"
:placeholder="t('deck', 'Select a list')"
:options="stacksFromBoard"
:max-height="100"
label="title">
<span slot="noOptions">
{{ t('deck', 'List is empty') }}
</span>
</NcMultiselect>
<button :disabled="!isBoardAndStackChoosen" class="primary" @click="moveCard">
{{ t('deck', 'Move card') }}
</button>
<button @click="modalShow=false">
{{ t('deck', 'Cancel') }}
</button>
</div>
</NcModal>
</template>
<script>
import { NcModal, NcMultiselect } from '@nextcloud/vue'
import { generateUrl } from '@nextcloud/router'
import axios from '@nextcloud/axios'
import { subscribe, unsubscribe } from '@nextcloud/event-bus'
export default {
name: 'CardMoveDialog',
components: { NcModal, NcMultiselect },
data() {
return {
card: null,
modalShow: false,
selectedBoard: '',
selectedStack: '',
stacksFromBoard: [],
}
},
computed: {
activeBoards() {
return this.$store.getters.boards.filter((item) => item.deletedAt === 0 && item.archived === false)
},
isBoardAndStackChoosen() {
return !(this.selectedBoard === '' || this.selectedStack === '')
},
},
mounted() {
subscribe('deck:card:show-move-dialog', this.openModal)
},
destroyed() {
unsubscribe('deck:card:show-move-dialog', this.openModal)
},
methods: {
openModal(card) {
this.card = card
this.modalShow = true
},
async loadStacksFromBoard(board) {
try {
const url = generateUrl('/apps/deck/stacks/' + board.id)
const response = await axios.get(url)
this.stacksFromBoard = response.data
} catch (err) {
return err
}
},
async moveCard() {
this.copiedCard = Object.assign({}, this.card)
this.copiedCard.stackId = this.selectedStack.id
this.$store.dispatch('moveCard', this.copiedCard)
if (parseInt(this.boardId) === parseInt(this.selectedStack.boardId)) {
await this.$store.commit('addNewCard', { ...this.copiedCard })
}
this.modalShow = false
},
},
}
</script>
<style lang="scss" scoped>
.modal__content {
width: 25vw;
min-width: 250px;
min-height: 120px;
text-align: center;
margin: 20px 20px 100px 20px;
.multiselect {
margin-bottom: 10px;
}
}
.modal__content button {
float: right;
margin-top: 50px;
}
</style>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,106 +0,0 @@
<!--
- @copyright Copyright (c) 2023 Johannes Szeibert <johannes@szeibert.de>
-
- @author Johannes Szeibert <johannes@szeibert.de>
-
- @license GNU AGPL version 3 or any later version
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation, either version 3 of the
- License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-->
<template>
<div v-if="cardId && ( attachments.length > 0 )" class="card-cover">
<div v-for="(attachment, index) in attachments"
:key="attachment.id"
:class="['image-wrapper', { 'rounded-left': index === 0 }, { 'rounded-right': index === attachments.length - 1 }]"
:style="{ backgroundImage: `url(${attachmentPreview(attachment)})` }" />
</div>
</template>
<script>
import { mapActions } from 'vuex'
import { generateUrl } from '@nextcloud/router'
export default {
name: 'CardCover',
props: {
cardId: {
type: Number,
required: true,
},
},
computed: {
attachments() {
return [...this.$store.getters.attachmentsByCard(this.cardId)]
// Filter deleted and hasPreview
.filter(attachment => attachment.deletedAt >= 0 && attachment.extendedData.hasPreview)
// sort by id (same as in AttachmentList) to get Newest
.sort((a, b) => b.id - a.id)
// limit to 3 like with android Deck app
.slice(0, 3)
},
attachmentPreview() {
// FIXME find a better way to get the stack-width
const stackWidth = getComputedStyle(document.documentElement).getPropertyValue('--stack-width').trim()
const x = Math.ceil(parseInt(stackWidth) / this.attachments.length) | 260
const y = 100
return attachment => (
// The core preview provider is a bit strange at times, providing much larger than needed images
// when cropping is enabled. Therefore use a=1 to not crop the image and let css handle the overflow
attachment.extendedData.fileid ? generateUrl(`/core/preview?fileId=${attachment.extendedData.fileid}&x=${x}&y=${y}&a=1`) : null
)
},
},
watch: {
cardId: {
immediate: true,
handler() {
if (this.$store.getters.cardById(this.cardId)?.attachmentCount > 0) {
this.fetchAttachments(this.cardId)
}
},
},
},
methods: {
...mapActions([
'fetchAttachments',
]),
},
}
</script>
<style lang="scss" scoped>
@import '../../css/variables';
.card-cover {
height: 100px;
display: flex;
margin-top: -8px;
margin-left: -8px;
margin-right: -8px;
.image-wrapper {
flex: 1;
position: relative;
background-size: cover;
background-repeat: no-repeat;
background-position: center center;
&.rounded-left {
border-top-left-radius: 10px;
}
&.rounded-right {
border-top-right-radius: 10px;
}
}
}
</style>

View File

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

View File

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

View File

@@ -1,184 +0,0 @@
<!--
- @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>
-
- @author Julius Härtl <jus@bitgrid.net>
-
- @license GNU AGPL version 3 or any later version
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation, either version 3 of the
- License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-->
<template>
<div>
<NcActionButton v-if="!hideDetailsEntry" :close-after-click="true" @click="openCard">
<CardBulletedIcon slot="icon" :size="20" decorative />
{{ t('deck', 'Card details') }}
</NcActionButton>
<NcActionButton v-if="canEdit && !isCurrentUserAssigned"
icon="icon-user"
:close-after-click="true"
@click="assignCardToMe()">
{{ t('deck', 'Assign to me') }}
</NcActionButton>
<NcActionButton v-if="canEdit && isCurrentUserAssigned"
icon="icon-user"
:close-after-click="true"
@click="unassignCardFromMe()">
{{ t('deck', 'Unassign myself') }}
</NcActionButton>
<NcActionButton v-if="canEdit"
icon="icon-checkmark"
:close-after-click="true"
@click="changeCardDoneStatus()">
{{ card.done ? t('deck', 'Mark as not done') : t('deck', 'Mark as done') }}
</NcActionButton>
<NcActionButton v-if="canEdit"
icon="icon-external"
:close-after-click="true"
@click="openCardMoveDialog">
{{ t('deck', 'Move card') }}
</NcActionButton>
<NcActionButton v-for="action in cardActions"
:key="action.label"
:close-after-click="true"
:icon="action.icon"
@click="action.callback(cardRichObject)">
{{ action.label }}
</NcActionButton>
<NcActionButton v-if="canEditBoard" :close-after-click="true" @click="archiveUnarchiveCard()">
<template #icon>
<ArchiveIcon :size="20" decorative />
</template>
{{ card.archived ? t('deck', 'Unarchive card') : t('deck', 'Archive card') }}
</NcActionButton>
<NcActionButton v-if="canEdit"
icon="icon-delete"
:close-after-click="true"
@click="deleteCard()">
{{ t('deck', 'Delete card') }}
</NcActionButton>
</div>
</template>
<script>
import { NcActionButton } from '@nextcloud/vue'
import { mapGetters, mapState } from 'vuex'
import ArchiveIcon from 'vue-material-design-icons/Archive.vue'
import CardBulletedIcon from 'vue-material-design-icons/CardBulleted.vue'
import { generateUrl } from '@nextcloud/router'
import { getCurrentUser } from '@nextcloud/auth'
import { showUndo } from '@nextcloud/dialogs'
import '@nextcloud/dialogs/dist/index.css'
import { emit } from '@nextcloud/event-bus'
export default {
name: 'CardMenuEntries',
components: { NcActionButton, ArchiveIcon, CardBulletedIcon },
props: {
card: {
type: Object,
default: null,
},
hideDetailsEntry: {
type: Boolean,
default: false,
},
},
data() {
return {
modalShow: false,
selectedBoard: '',
selectedStack: '',
stacksFromBoard: [],
}
},
computed: {
...mapGetters([
'isArchived',
'boards',
'cardActions',
'stackById',
'boardById',
]),
...mapState({
showArchived: state => state.showArchived,
currentBoard: state => state.currentBoard,
}),
canEdit() {
return !this.card.archived
},
canEditBoard() {
if (this.currentBoard) {
return this.$store.getters.canEdit
}
const board = this.$store.getters.boards.find((item) => item.id === this.card.boardId)
return !!board?.permissions?.PERMISSION_EDIT
},
isCurrentUserAssigned() {
return this.card.assignedUsers.find((item) => item.type === 0 && item.participant.uid === getCurrentUser()?.uid)
},
boardId() {
return this.card?.boardId ? this.card.boardId : Number(this.$route.params.id)
},
cardRichObject() {
return {
id: '' + this.card.id,
name: this.card.title,
boardname: this.boardById(this.boardId)?.title,
stackname: this.stackById(this.card.stackId)?.title,
link: window.location.protocol + '//' + window.location.host + generateUrl('/apps/deck/') + `card/${this.card.id}`,
}
},
},
methods: {
openCard() {
const boardId = this.card?.boardId ? this.card.boardId : this.$route.params.id
this.$router.push({ name: 'card', params: { id: boardId, cardId: this.card.id } }).catch(() => {})
},
deleteCard() {
this.$store.dispatch('deleteCard', this.card)
const undoCard = { ...this.card, deletedAt: 0 }
showUndo(t('deck', 'Card deleted'), () => this.$store.dispatch('cardUndoDelete', undoCard))
},
changeCardDoneStatus() {
this.$store.dispatch('changeCardDoneStatus', { ...this.card, done: !this.card.done })
},
archiveUnarchiveCard() {
this.$store.dispatch('archiveUnarchiveCard', { ...this.card, archived: !this.card.archived })
},
assignCardToMe() {
this.$store.dispatch('assignCardToUser', {
card: this.card,
assignee: {
userId: getCurrentUser()?.uid,
type: 0,
},
})
},
unassignCardFromMe() {
this.$store.dispatch('removeUserFromCard', {
card: this.card,
assignee: {
userId: getCurrentUser()?.uid,
type: 0,
},
})
},
openCardMoveDialog() {
emit('deck:card:show-move-dialog', this.card)
},
},
}
</script>

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