Compare commits

..

88 Commits

Author SHA1 Message Date
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
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
Julius Härtl
2a5eece8fd Merge pull request #4673 from nextcloud/enh/noid/use-primary-element 2023-05-15 08:33:36 +02:00
Julius Härtl
513ad35af9 Merge pull request #4683 from nextcloud/enh/devcontainer 2023-05-15 08:25:59 +02:00
Julius Härtl
352e66fc8d feat: Add devcontainer and update dev docs
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-14 12:58:02 +02:00
dependabot[bot]
9bffe51fce Merge pull request #4676 from nextcloud/dependabot/npm_and_yarn/main/cypress-12.12.0 2023-05-13 08:45:28 +00:00
dependabot[bot]
31367d3a36 Merge pull request #4675 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/vue-7.11.4 2023-05-13 08:44:06 +00:00
dependabot[bot]
9a8ecf5cec Merge pull request #4678 from nextcloud/dependabot/composer/phpunit/phpunit-9.6.8 2023-05-13 07:20:54 +00:00
dependabot[bot]
df4b6b117f Chore(deps): Bump @nextcloud/vue from 7.11.3 to 7.11.4
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.11.3 to 7.11.4.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-vue/blob/v7.11.4/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v7.11.3...v7.11.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-13 05:46:21 +00:00
dependabot[bot]
82442917de bump cypress from 12.11.0 to 12.12.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-13 05:46:18 +00:00
dependabot[bot]
da1b934b4f Merge pull request #4674 from nextcloud/dependabot/npm_and_yarn/main/dompurify-3.0.3 2023-05-13 05:45:30 +00:00
dependabot[bot]
a963518e88 Chore(deps-dev): Bump phpunit/phpunit from 9.6.7 to 9.6.8
Bumps [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit) from 9.6.7 to 9.6.8.
- [Changelog](https://github.com/sebastianbergmann/phpunit/blob/9.6.8/ChangeLog-9.6.md)
- [Commits](https://github.com/sebastianbergmann/phpunit/compare/9.6.7...9.6.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-13 02:58:25 +00:00
dependabot[bot]
a5263db6ca Chore(deps): Bump dompurify from 3.0.2 to 3.0.3
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.0.2 to 3.0.3.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.0.2...3.0.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-13 02:01:56 +00:00
Simon L
9f91ecc116 Use the color-primary-element* variables
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-12 16:26:34 +02:00
Nextcloud bot
ccf1445ccf Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-05-12 02:43:16 +00:00
Julius Härtl
4deca737ad Merge pull request #4664 from nextcloud/bugfix/4663 2023-05-11 15:15:30 +02:00
Julius Härtl
03e34b291e fix: Properly overwrite z-index of datepicker above modal
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-10 18:18:32 +02:00
Julius Härtl
6cda378fe2 Bump version to 1.10.0-beta.1
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-10 15:54:25 +02:00
Julius Härtl
c3e2aec149 Merge pull request #4657 from fsamapoor/replace_strpos_usages 2023-05-10 07:46:30 +02:00
Julius Härtl
b9c8e8f315 Merge pull request #4660 from nextcloud/bugfix/noid/overdue 2023-05-10 07:36:17 +02:00
Faraz Samapoor
b8566a3a0d Converts 'strpos()' calls to improve code readability.
Signed-off-by: Faraz Samapoor <fsamapoor@gmail.com>
2023-05-10 08:55:42 +03:30
Julius Härtl
d028728407 fix: Bring back overdue column by removing faulty condition
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-09 19:27:41 +02:00
dependabot[bot]
c31891654c Merge pull request #4658 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/vue-7.11.3 2023-05-09 06:17:19 +00:00
dependabot[bot]
e7c04ac19f Chore(deps): Bump @nextcloud/vue from 7.10.0 to 7.11.3
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.10.0 to 7.11.3.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-vue/blob/v7.11.3/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v7.10.0...v7.11.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-09 05:39:52 +00:00
Nextcloud bot
7f250e8ae3 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-05-08 02:40:17 +00:00
Julius Härtl
ca8dfd8cab Merge pull request #4651 from nextcloud/dependabot/github_actions/skjnldsv/read-package-engines-version-actions-2.1 2023-05-07 18:29:06 +02:00
Julius Härtl
ee55bc56fa Merge pull request #4656 from nextcloud/dependabot/github_actions/peter-evans/create-pull-request-5.0.1 2023-05-07 18:27:45 +02:00
dependabot[bot]
ff234f68e1 Merge pull request #4655 from nextcloud/dependabot/github_actions/peter-evans/create-or-update-comment-3.0.1 2023-05-06 06:21:07 +00:00
dependabot[bot]
dc344e4d50 Merge pull request #4652 from nextcloud/dependabot/composer/vimeo/psalm-5.11.0 2023-05-06 05:48:23 +00:00
dependabot[bot]
446bfcd22b Chore(deps): Bump peter-evans/create-pull-request from 3.14.0 to 5.0.1
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 3.14.0 to 5.0.1.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v3.14.0...284f54f989303d2699d373481a0cfa13ad5a6666)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-06 03:50:14 +00:00
dependabot[bot]
29cce7fde6 Chore(deps): Bump peter-evans/create-or-update-comment
Bumps [peter-evans/create-or-update-comment](https://github.com/peter-evans/create-or-update-comment) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/peter-evans/create-or-update-comment/releases)
- [Commits](3383acd359...ca08ebd5dc)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-06 03:44:06 +00:00
dependabot[bot]
e025d10aca Chore(deps-dev): Bump vimeo/psalm from 5.9.0 to 5.11.0
Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 5.9.0 to 5.11.0.
- [Release notes](https://github.com/vimeo/psalm/releases)
- [Commits](https://github.com/vimeo/psalm/compare/5.9.0...5.11.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-06 03:21:03 +00:00
dependabot[bot]
2e316331cc Chore(deps): Bump skjnldsv/read-package-engines-version-actions
Bumps [skjnldsv/read-package-engines-version-actions](https://github.com/skjnldsv/read-package-engines-version-actions) from 1.2 to 2.1.
- [Release notes](https://github.com/skjnldsv/read-package-engines-version-actions/releases)
- [Commits](https://github.com/skjnldsv/read-package-engines-version-actions/compare/v1.2...0ce2ed60f6df073a62a77c0a4958dd0fc68e32e7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-06 01:56:35 +00:00
Julius Härtl
65fabe15f7 Merge pull request #4648 from fsamapoor/patch-1 2023-05-04 22:11:14 +02:00
Faraz Samapoor
3f34577064 Refactors lib\Activity\DeckProvider.php to improve code readability.
Converts 'strpos()' calls to 'str_contains()' to improve code readability.

Signed-off-by: Faraz Samapoor <f.samapoor@gmail.com>
2023-05-04 17:08:53 +03:30
Julius Härtl
284ca3d202 fix: z-index of datepicker in modal
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-03 13:11:09 +02:00
Julius Härtl
270c4658b8 Merge pull request #4640 from nextcloud/automated/noid/main-fix-npm-audit
[main] Fix npm audit
2023-05-03 12:45:02 +02:00
Julius Härtl
b189146a05 Merge pull request #4643 from nextcloud/bugfix/datetime-picker-position
fix: Append datetime picker to body to avoid cut off
2023-05-03 12:40:49 +02:00
Julius Härtl
b2d035f05d fix: Append datetime picker to body to avoid cut off
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-03 10:25:40 +02:00
nextcloud-command
9f72a230b5 chore(deps): fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2023-05-03 08:13:29 +00:00
Julius Härtl
6a2d36d10f Update appbuild.yml
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-03 10:06:01 +02:00
Julius Härtl
eb38112605 Create npm-audit-fix.yml
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-03 10:05:34 +02:00
dependabot[bot]
b9629abc96 Merge pull request #4634 from nextcloud/dependabot/npm_and_yarn/main/vue/vue2-jest-29.2.4 2023-04-29 07:37:00 +00:00
dependabot[bot]
6acdfe4d1c Merge pull request #4635 from nextcloud/dependabot/npm_and_yarn/main/babel/runtime-7.21.5 2023-04-29 06:40:25 +00:00
dependabot[bot]
0f50af9d0a Chore(deps-dev): Bump @vue/vue2-jest from 29.2.3 to 29.2.4
Bumps [@vue/vue2-jest](https://github.com/vuejs/vue-jest) from 29.2.3 to 29.2.4.
- [Release notes](https://github.com/vuejs/vue-jest/releases)
- [Commits](https://github.com/vuejs/vue-jest/compare/v29.2.3...v29.2.4)

---
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-04-29 06:30:51 +00:00
dependabot[bot]
c15fbcab0b Merge pull request #4633 from nextcloud/dependabot/npm_and_yarn/main/eslint-plugin-cypress-2.13.3 2023-04-29 06:30:04 +00:00
dependabot[bot]
24ab06109f Chore(deps): Bump @babel/runtime from 7.21.0 to 7.21.5
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.21.0 to 7.21.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.21.5/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-29 03:56:05 +00:00
dependabot[bot]
25e901060e Chore(deps-dev): Bump eslint-plugin-cypress from 2.13.2 to 2.13.3
Bumps [eslint-plugin-cypress](https://github.com/cypress-io/eslint-plugin-cypress) from 2.13.2 to 2.13.3.
- [Release notes](https://github.com/cypress-io/eslint-plugin-cypress/releases)
- [Commits](https://github.com/cypress-io/eslint-plugin-cypress/compare/v2.13.2...v2.13.3)

---
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>
2023-04-29 03:38:18 +00:00
dependabot[bot]
9d49aeb80b Merge pull request #4628 from nextcloud/dependabot/npm_and_yarn/main/cypress-12.11.0 2023-04-29 03:17:48 +00:00
dependabot[bot]
194f920161 Chore(deps-dev): Bump cypress from 12.10.0 to 12.11.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 12.10.0 to 12.11.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.10.0...v12.11.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-29 01:58:03 +00:00
Nextcloud bot
8379a88b3e Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-04-28 02:40:29 +00:00
Julius Härtl
741e4be749 Merge pull request #4623 from nextcloud/deps/update 2023-04-27 15:46:58 +02:00
Julius Härtl
42aff58c6e Merge pull request #4622 from nextcloud/allow-to-change-visibility 2023-04-27 08:43:05 +02:00
Bjoern Schiessle
e2a4737fdb forbid changing the displayname or color of the calendar/deck when the user doesn't has the "manage" permissions
Signed-off-by: Bjoern Schiessle <bjoern@nextcloud.com>
2023-04-27 08:34:46 +02:00
Nextcloud bot
7f6895aa7a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-04-27 02:40:45 +00:00
Björn Schießle
14d686a6bc Allow user to toggle visibility of the calendar of deck boards
The calendar object needs to be exposed with "write" properties in order to allow users to hide/show the corresponding calendar in the calendar app. It doesn't has any affects on the general permissions for the whole board or the tasks. As soon as you select a task you jump to the deck app where the normal deck permissions are applied.

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

Signed-off-by: Björn Schießle <bjoern@nextcloud.com>
2023-04-26 21:50:18 +02:00
Julius Härtl
b76c85f187 Merge pull request #4589 from nextcloud/dependabot/github_actions/peter-evans/create-or-update-comment-3.0.0 2023-04-26 18:37:33 +02:00
Julius Härtl
aea3f19c82 Merge pull request #4588 from nextcloud/dependabot/github_actions/peter-evans/create-pull-request-5.0.0 2023-04-26 18:37:26 +02:00
Julius Härtl
f98004f343 Merge pull request #4617 from pschopen/main 2023-04-26 18:12:17 +02:00
Julius Härtl
2066080e56 fix: move sidebar tab icons to material design
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-04-26 18:05:55 +02:00
Julius Härtl
df0db786be chore: Bump @nextcloud/vue @nextcloud/webpack-vue-config and remove @nextcloud/vue-richtext
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-04-26 16:41:05 +02:00
Julius Härtl
8f7712011f chore: Bump nextcloud-vue-collections
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-04-26 16:31:14 +02:00
Julius Härtl
ee308c8afd Merge pull request #4586 from nextcloud/chore/remove-nextcloud-vue-dashboard
chore: Remove unused @nextcloud/vue-dashboard
2023-04-26 11:50:09 +02:00
Julius Härtl
bd9538d143 Merge pull request #4604 from nextcloud/Jerome-Herbinet-card-date-patch-1 2023-04-25 10:13:05 +02:00
Jérôme Herbinet
0c825addb1 Following nimishavijay's suggestion
Signed-off-by: Jérôme Herbinet <33763786+Jerome-Herbinet@users.noreply.github.com>

Signed-off-by: Jérôme Herbinet <33763786+Jerome-Herbinet@users.noreply.github.com>
2023-04-25 09:05:33 +02:00
Nextcloud bot
ff8b010d78 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-04-23 02:40:52 +00:00
Philip
d27c083bcc Update Description.vue
Signed-off-by: Philip <65334274+pschopen@users.noreply.github.com>
2023-04-22 22:37:21 +02:00
dependabot[bot]
a7b2c65387 Merge pull request #4616 from nextcloud/dependabot/npm_and_yarn/main/relative-ci/agent-4.1.4 2023-04-22 07:41:42 +00:00
dependabot[bot]
693babf89a Merge pull request #4612 from nextcloud/dependabot/composer/tests/integration/behat/behat-approx-3.13.0 2023-04-22 07:37:38 +00:00
dependabot[bot]
0cf124c8b1 Merge pull request #4615 from nextcloud/dependabot/github_actions/shivammathur/setup-php-2.25.1 2023-04-22 07:06:59 +00:00
dependabot[bot]
95f6cfe748 bump @relative-ci/agent from 4.1.3 to 4.1.4
---
updated-dependencies:
- dependency-name: "@relative-ci/agent"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-22 06:59:21 +00:00
dependabot[bot]
3e39db784c Merge pull request #4611 from nextcloud/dependabot/npm_and_yarn/main/cypress-12.10.0 2023-04-22 06:58:22 +00:00
dependabot[bot]
fbbe30be6d Merge pull request #4609 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/router-2.1.1 2023-04-22 06:56:15 +00:00
dependabot[bot]
7fb0822ce8 Chore(deps-dev): Update behat/behat requirement in /tests/integration
Updates the requirements on [behat/behat](https://github.com/Behat/Behat) to permit the latest version.
- [Release notes](https://github.com/Behat/Behat/releases)
- [Changelog](https://github.com/Behat/Behat/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Behat/Behat/compare/v3.12.0...v3.13.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-22 06:46:13 +00:00
dependabot[bot]
8329caa94a Merge pull request #4607 from nextcloud/dependabot/composer/tests/integration/guzzlehttp/guzzle-7.5.1 2023-04-22 06:45:29 +00:00
dependabot[bot]
bf015cd951 Chore(deps): Bump shivammathur/setup-php from 2.24.0 to 2.25.1
Bumps [shivammathur/setup-php](https://github.com/shivammathur/setup-php) from 2.24.0 to 2.25.1.
- [Release notes](https://github.com/shivammathur/setup-php/releases)
- [Commits](https://github.com/shivammathur/setup-php/compare/2.24.0...2.25.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-22 03:46:56 +00:00
dependabot[bot]
bee0fde025 bump cypress from 12.9.0 to 12.10.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-04-22 03:21:31 +00:00
dependabot[bot]
f18069c504 bump @nextcloud/router from 2.0.1 to 2.1.1
---
updated-dependencies:
- dependency-name: "@nextcloud/router"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-22 03:18:25 +00:00
dependabot[bot]
8b410a453a Chore(deps-dev): Update guzzlehttp/guzzle requirement
Updates the requirements on [guzzlehttp/guzzle](https://github.com/guzzle/guzzle) to permit the latest version.
- [Release notes](https://github.com/guzzle/guzzle/releases)
- [Changelog](https://github.com/guzzle/guzzle/blob/7.5/CHANGELOG.md)
- [Commits](https://github.com/guzzle/guzzle/compare/7.5.0...7.5.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-22 03:06:05 +00:00
dependabot[bot]
5c9ad85c7e Chore(deps): Bump peter-evans/create-or-update-comment
Bumps [peter-evans/create-or-update-comment](https://github.com/peter-evans/create-or-update-comment) from 2.1.1 to 3.0.0.
- [Release notes](https://github.com/peter-evans/create-or-update-comment/releases)
- [Commits](67dcc547d3...3383acd359)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-08 03:24:41 +00:00
dependabot[bot]
42c8e90abb Chore(deps): Bump peter-evans/create-pull-request from 4.2.4 to 5.0.0
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 4.2.4 to 5.0.0.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](38e0b6e68b...5b4a9f6a9e)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-08 03:24:37 +00:00
Julius Härtl
bf37cc2ed8 fix: Move dashboard fetching to dedicated store module
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-04-05 20:56:31 +02:00
Julius Härtl
faac607b75 chore: Remove unused @nextcloud/vue-dashboard
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-04-05 20:33:27 +02:00
60 changed files with 33451 additions and 33864 deletions

View File

@@ -0,0 +1,29 @@
{
"image": "ghcr.io/juliushaertl/nextcloud-dev-php80:latest",
"forwardPorts": [80],
"containerEnv": {
"NEXTCLOUD_AUTOINSTALL_APPS": "deck",
"XDEBUG_MODE": "debug"
},
"customizations": {
"vscode": {
"extensions": [
"felixfbecker.php-intellisense",
"octref.vetur"
],
"settings": {
"php.suggest.basic": false,
"git.alwaysSignOff": true
}
}
},
"workspaceMount": "source=${localWorkspaceFolder},target=/var/www/html/apps-extra/deck,type=bind",
"workspaceFolder": "/var/www/html/apps-extra/deck",
"overrideCommand": true,
"postAttachCommand": "bash ./.devcontainer/setup.sh",
"portsAttributes": {
"80": {
"label": "Webserver"
}
}
}

9
.devcontainer/setup.sh Normal file
View File

@@ -0,0 +1,9 @@
#!/bin/bash
(
cd /tmp && /usr/local/bin/bootstrap.sh apache2ctl start
)
composer install --no-dev
npm ci
npm run dev

View File

@@ -13,7 +13,7 @@ jobs:
strategy:
matrix:
node-version: [14.x]
node-version: [16.x]
steps:
- uses: actions/checkout@v3
@@ -24,7 +24,7 @@ jobs:
- name: Set up npm7
run: npm i -g npm@7
- name: Setup PHP
uses: shivammathur/setup-php@2.24.0
uses: shivammathur/setup-php@2.25.1
with:
php-version: '7.4'
tools: composer

View File

@@ -66,7 +66,7 @@ jobs:
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
- name: Set up php ${{ env.PHP_VERSION }}
uses: shivammathur/setup-php@2.24.0 # v2
uses: shivammathur/setup-php@2.25.1 # v2
with:
php-version: ${{ env.PHP_VERSION }}
coverage: none

View File

@@ -23,7 +23,7 @@ jobs:
steps:
- name: Add reaction on start
uses: peter-evans/create-or-update-comment@67dcc547d311b736a8e6c5c236542148a47adc3d # v2.1.1
uses: peter-evans/create-or-update-comment@ca08ebd5dc95aa0cd97021e9708fcd6b87138c9b # v3.0.1
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
repository: ${{ github.event.repository.full_name }}
@@ -42,7 +42,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
- name: Add reaction on failure
uses: peter-evans/create-or-update-comment@67dcc547d311b736a8e6c5c236542148a47adc3d # v2.1.1
uses: peter-evans/create-or-update-comment@ca08ebd5dc95aa0cd97021e9708fcd6b87138c9b # v3.0.1
if: failure()
with:
token: ${{ secrets.COMMAND_BOT_PAT }}

View File

@@ -23,7 +23,7 @@ jobs:
# containers: [1, 2, 3]
php-versions: [ '8.0' ]
databases: [ 'sqlite' ]
server-versions: [ 'master' ]
server-versions: [ 'stable27' ]
steps:
- name: Use Node.js ${{ matrix.node-version }}
@@ -64,7 +64,7 @@ jobs:
path: apps/text
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@2.24.0
uses: shivammathur/setup-php@2.25.1
with:
php-version: ${{ matrix.php-versions }}
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, zip, gd, apcu

View File

@@ -28,7 +28,7 @@ jobs:
matrix:
php-versions: ['8.1']
databases: ['sqlite', 'mysql', 'pgsql']
server-versions: ['master']
server-versions: ['stable27']
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
@@ -71,7 +71,7 @@ jobs:
path: apps/${{ env.APP_NAME }}
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@2.24.0
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
@@ -151,4 +151,4 @@ jobs:
repo: context.repo.repo,
body: comment
})
}
}

View File

@@ -25,7 +25,7 @@ jobs:
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
- name: Set up php
uses: shivammathur/setup-php@2.24.0 # v2
uses: shivammathur/setup-php@2.25.1 # v2
with:
php-version: 8.1
coverage: none

View File

@@ -34,7 +34,7 @@ jobs:
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@2.24.0 # v2
uses: shivammathur/setup-php@2.25.1 # v2
with:
php-version: ${{ matrix.php-versions }}
coverage: none

View File

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

71
.github/workflows/npm-audit-fix.yml vendored Normal file
View File

@@ -0,0 +1,71 @@
# 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: npm audit fix and compile
on:
workflow_dispatch:
schedule:
# At 2:30 on Sundays
- cron: '30 2 * * 0'
jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
branches: ["main", "master", "stable26", "stable25", "stable24"]
name: npm-audit-fix-${{ matrix.branches }}
steps:
- name: Checkout
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@0ce2ed60f6df073a62a77c0a4958dd0fc68e32e7 # v2.1
id: versions
with:
fallbackNode: '^16'
fallbackNpm: '^7'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # v3
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
- name: Fix npm audit
run: |
npm audit fix
- name: Run npm ci and npm run build
if: always()
run: |
npm ci
npm run build --if-present
- name: Create Pull Request
if: always()
uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666 # v3
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
commit-message: "chore(deps): fix npm audit"
committer: GitHub <noreply@github.com>
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
signoff: true
branch: automated/noid/${{ matrix.branches }}-fix-npm-audit
title: "[${{ matrix.branches }}] Fix npm audit"
body: |
Auto-generated fix of npm audit
labels: |
dependencies
3. to review

View File

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

View File

@@ -27,7 +27,7 @@ jobs:
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
- name: Set up php
uses: shivammathur/setup-php@2.24.0 # v2
uses: shivammathur/setup-php@2.25.1 # v2
with:
php-version: 8.1
coverage: none

View File

@@ -28,7 +28,7 @@ jobs:
submodules: true
- name: Set up php8.1
uses: shivammathur/setup-php@2.24.0 # v2
uses: shivammathur/setup-php@2.25.1 # v2
with:
php-version: 8.1
extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
@@ -52,7 +52,7 @@ jobs:
continue-on-error: true
- name: Create Pull Request
uses: peter-evans/create-pull-request@38e0b6e68b4c852a5500a94740f0e535e0d7ba54 # 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,6 +1,47 @@
# Changelog
All notable changes to this project will be documented in this file.
## 1.10.0-beta.2
### 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)
- 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.10.0-beta.1
### Added
- Compatibility with Nextcloud 27
### Fixed
- 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)
- Gracefully handle not found card for a share @mejo- [#4566](https://github.com/nextcloud/deck/pull/4566)
- Prevent tag itself being edit button if user lacks permissions @joshtrichards [#4574](https://github.com/nextcloud/deck/pull/4574)
- chore: Remove unused @nextcloud/vue-dashboard @juliushaertl [#4586](https://github.com/nextcloud/deck/pull/4586)
- Update Description.vue: Fixes the issue of hidden text by menu bar @pschopen [#4617](https://github.com/nextcloud/deck/pull/4617)
- allow user to toggle visibility of the calendar for a deck board @schiessle [#4622](https://github.com/nextcloud/deck/pull/4622)
- fix: Append datetime picker to body to avoid cut off @juliushaertl [#4643](https://github.com/nextcloud/deck/pull/4643)
- fix: Bring back overdue column by removing faulty condition @juliushaertl [#4660](https://github.com/nextcloud/deck/pull/4660)
- fix(sessions): Do not send close request without token @juliushaertl [#4510](https://github.com/nextcloud/deck/pull/4510)
- tests(integration): Add test for multiple board shares to the same user @juliushaertl [#4494](https://github.com/nextcloud/deck/pull/4494)
- fix(API): Fix board API details parameter to work as expected @nickvergessen [#4518](https://github.com/nextcloud/deck/pull/4518)
- Fix : Overlapping expiry dates on tags @Jerome-Herbinet [#4535](https://github.com/nextcloud/deck/pull/4535)
- Fix consistency of a "Create card" wording with its equivalent for Notes ("New card") @Jerome-Herbinet [#4534](https://github.com/nextcloud/deck/pull/4534)
- tests(integration): Add integration tests for due dates @juliushaertl [#4489](https://github.com/nextcloud/deck/pull/4489)
- 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)
## 1.9.0-beta.1

View File

@@ -30,24 +30,7 @@ Deck is a kanban style organization tool aimed at personal planning and project
## Installation/Update
This app is supposed to work on the two latest Nextcloud versions.
### Install latest release
You can download and install the latest release from the [Nextcloud app store](https://apps.nextcloud.com/apps/deck)
### Install from git
If you want to run the latest development version from git source, you need to clone the repo to your apps folder:
```
git clone https://github.com/nextcloud/deck.git
cd deck
make install-deps
make build
```
Please make sure you have installed the following dependencies: `make, which, tar, npm, curl, composer`
The app can be installed through the app store within Nextcloud. You can also download the latest release from the [release page](https://github.com/nextcloud-releases/deck/releases).
## Performance limitations
@@ -62,42 +45,47 @@ Improvements on Nextcloud server and Deck itself will improve the situation.
## Developing
### Nextcloud environment
There are multiple ways to develop on Deck. As you will need a Nextcloud server running, the individual options are described below.
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).
### General build instructions
General build instructions for the app itself are the same for all options.
To build you will need to have [Node.js](https://nodejs.org/en/) and [Composer](https://getcomposer.org/) installed.
- Install PHP dependencies: `composer install --no-dev`
- Install JS dependencies: `npm ci`
- Build JavaScript for the frontend
- Development build `npm run dev`
- Watch for changes `npm run watch`
- Production build `npm run build`
### GitHub Codespaces / VS Code devcontainer
- Open code spaces or the repository in VS Code to start the dev container
- The container will automatically install all dependencies and build the app
- Nextcloud will be installed from the master development branch and be available on a port exposed by the container
### Docker: Simple app development container
- 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
- Run Nextcloud development container and mount the apps source code into it
```
docker run --rm \
-p 8080:80 \
-v ~/path/to/app:/var/www/html/apps-extra/app \
ghcr.io/juliushaertl/nextcloud-dev-php80:latest
```
### 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.
### PHP
Nothing to prepare, just dig into the code.
### JavaScript
This requires at least Node 16 and npm 7 to be installed.
Deck requires running a `make build-js` to install npm dependencies and build the JavaScript code using webpack. While developing you can also use `make watch` to rebuild everytime the code changes.
#### Hot reloading
Enable debug mode in your config.php `'debug' => true,`
Without SSL:
```
npx webpack-dev-server --config webpack.hot.js \
--public localhost:3000 \
--output-public-path 'http://localhost:3000/js/'
```
With SSL:
```
npx webpack-dev-server --config webpack.dev.js --https \
--cert ~/repos/nextcloud/nc-dev/data/ssl/nextcloud.local.crt \
--key ~/repos/nextcloud/nc-dev/data/ssl/nextcloud.local.key \
--public nextcloud.local:3000 \
--output-public-path 'https://nextcloud.local:3000/js/'
```
### 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.10.0-dev</version>
<version>1.10.0-beta.2</version>
<licence>agpl</licence>
<author>Julius Härtl</author>
<documentation>

View File

@@ -19,7 +19,7 @@
"symfony/event-dispatcher": "^4.0",
"vimeo/psalm": "^5.4",
"php-parallel-lint/php-parallel-lint": "^1.2",
"nextcloud/ocp": "dev-master"
"nextcloud/ocp": "dev-stable27"
},
"config": {
"optimize-autoloader": true,

97
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": "22d201a4569de6d4fafbc13277ae91a6",
"content-hash": "30950a60ff7a29428176f01bd6f4589b",
"packages": [
{
"name": "cogpowered/finediff",
@@ -1131,16 +1131,16 @@
},
{
"name": "netresearch/jsonmapper",
"version": "v4.1.0",
"version": "v4.2.0",
"source": {
"type": "git",
"url": "https://github.com/cweiske/jsonmapper.git",
"reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f"
"reference": "f60565f8c0566a31acf06884cdaa591867ecc956"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/cfa81ea1d35294d64adb9c68aa4cb9e92400e53f",
"reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f",
"url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/f60565f8c0566a31acf06884cdaa591867ecc956",
"reference": "f60565f8c0566a31acf06884cdaa591867ecc956",
"shasum": ""
},
"require": {
@@ -1176,9 +1176,9 @@
"support": {
"email": "cweiske@cweiske.de",
"issues": "https://github.com/cweiske/jsonmapper/issues",
"source": "https://github.com/cweiske/jsonmapper/tree/v4.1.0"
"source": "https://github.com/cweiske/jsonmapper/tree/v4.2.0"
},
"time": "2022-12-08T20:46:14+00:00"
"time": "2023-04-09T17:37:40+00:00"
},
{
"name": "nextcloud/coding-standard",
@@ -1223,16 +1223,16 @@
},
{
"name": "nextcloud/ocp",
"version": "dev-master",
"version": "dev-stable27",
"source": {
"type": "git",
"url": "https://github.com/nextcloud-deps/ocp.git",
"reference": "5636b942e35ee391b1103150261d83d3d753d657"
"reference": "92f707dc8f36a76ddfed4d52d999d672613a4748"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/5636b942e35ee391b1103150261d83d3d753d657",
"reference": "5636b942e35ee391b1103150261d83d3d753d657",
"url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/92f707dc8f36a76ddfed4d52d999d672613a4748",
"reference": "92f707dc8f36a76ddfed4d52d999d672613a4748",
"shasum": ""
},
"require": {
@@ -1242,7 +1242,6 @@
"psr/event-dispatcher": "^1.0",
"psr/log": "^1.1"
},
"default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -1264,7 +1263,7 @@
"issues": "https://github.com/nextcloud-deps/ocp/issues",
"source": "https://github.com/nextcloud-deps/ocp/tree/master"
},
"time": "2023-02-08T00:37:37+00:00"
"time": "2023-05-17T10:58:24+00:00"
},
{
"name": "nikic/php-parser",
@@ -1712,16 +1711,16 @@
},
{
"name": "phpstan/phpdoc-parser",
"version": "1.16.1",
"version": "1.20.4",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
"reference": "e27e92d939e2e3636f0a1f0afaba59692c0bf571"
"reference": "7d568c87a9df9c5f7e8b5f075fc469aa8cb0a4cd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/e27e92d939e2e3636f0a1f0afaba59692c0bf571",
"reference": "e27e92d939e2e3636f0a1f0afaba59692c0bf571",
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/7d568c87a9df9c5f7e8b5f075fc469aa8cb0a4cd",
"reference": "7d568c87a9df9c5f7e8b5f075fc469aa8cb0a4cd",
"shasum": ""
},
"require": {
@@ -1751,9 +1750,9 @@
"description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.16.1"
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.20.4"
},
"time": "2023-02-07T18:11:17+00:00"
"time": "2023-05-02T09:19:37+00:00"
},
{
"name": "phpunit/php-code-coverage",
@@ -2075,16 +2074,16 @@
},
{
"name": "phpunit/phpunit",
"version": "9.6.7",
"version": "9.6.8",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "c993f0d3b0489ffc42ee2fe0bd645af1538a63b2"
"reference": "17d621b3aff84d0c8b62539e269e87d8d5baa76e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c993f0d3b0489ffc42ee2fe0bd645af1538a63b2",
"reference": "c993f0d3b0489ffc42ee2fe0bd645af1538a63b2",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/17d621b3aff84d0c8b62539e269e87d8d5baa76e",
"reference": "17d621b3aff84d0c8b62539e269e87d8d5baa76e",
"shasum": ""
},
"require": {
@@ -2158,7 +2157,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.7"
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.8"
},
"funding": [
{
@@ -2174,7 +2173,7 @@
"type": "tidelift"
}
],
"time": "2023-04-14T08:58:40+00:00"
"time": "2023-05-11T05:14:45+00:00"
},
{
"name": "psr/cache",
@@ -3153,16 +3152,16 @@
},
{
"name": "sebastian/diff",
"version": "4.0.4",
"version": "4.0.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
"reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
"reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
"reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131",
"reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131",
"shasum": ""
},
"require": {
@@ -3207,7 +3206,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/diff/issues",
"source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
"source": "https://github.com/sebastianbergmann/diff/tree/4.0.5"
},
"funding": [
{
@@ -3215,7 +3214,7 @@
"type": "github"
}
],
"time": "2020-10-26T13:10:38+00:00"
"time": "2023-05-07T05:35:17+00:00"
},
{
"name": "sebastian/environment",
@@ -3882,16 +3881,16 @@
},
{
"name": "symfony/console",
"version": "v5.4.22",
"version": "v5.4.23",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "3cd51fd2e6c461ca678f84d419461281bd87a0a8"
"reference": "90f21e27d0d88ce38720556dd164d4a1e4c3934c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/3cd51fd2e6c461ca678f84d419461281bd87a0a8",
"reference": "3cd51fd2e6c461ca678f84d419461281bd87a0a8",
"url": "https://api.github.com/repos/symfony/console/zipball/90f21e27d0d88ce38720556dd164d4a1e4c3934c",
"reference": "90f21e27d0d88ce38720556dd164d4a1e4c3934c",
"shasum": ""
},
"require": {
@@ -3961,7 +3960,7 @@
"terminal"
],
"support": {
"source": "https://github.com/symfony/console/tree/v5.4.22"
"source": "https://github.com/symfony/console/tree/v5.4.23"
},
"funding": [
{
@@ -3977,7 +3976,7 @@
"type": "tidelift"
}
],
"time": "2023-03-25T09:27:28+00:00"
"time": "2023-04-24T18:47:29+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -4211,16 +4210,16 @@
},
{
"name": "symfony/filesystem",
"version": "v5.4.21",
"version": "v5.4.23",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
"reference": "e75960b1bbfd2b8c9e483e0d74811d555ca3de9f"
"reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/e75960b1bbfd2b8c9e483e0d74811d555ca3de9f",
"reference": "e75960b1bbfd2b8c9e483e0d74811d555ca3de9f",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5",
"reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5",
"shasum": ""
},
"require": {
@@ -4255,7 +4254,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/filesystem/tree/v5.4.21"
"source": "https://github.com/symfony/filesystem/tree/v5.4.23"
},
"funding": [
{
@@ -4271,7 +4270,7 @@
"type": "tidelift"
}
],
"time": "2023-02-14T08:03:56+00:00"
"time": "2023-03-02T11:38:35+00:00"
},
{
"name": "symfony/finder",
@@ -5321,16 +5320,16 @@
},
{
"name": "vimeo/psalm",
"version": "5.9.0",
"version": "5.11.0",
"source": {
"type": "git",
"url": "https://github.com/vimeo/psalm.git",
"reference": "8b9ad1eb9e8b7d3101f949291da2b9f7767cd163"
"reference": "c9b192ab8400fdaf04b2b13d110575adc879aa90"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/vimeo/psalm/zipball/8b9ad1eb9e8b7d3101f949291da2b9f7767cd163",
"reference": "8b9ad1eb9e8b7d3101f949291da2b9f7767cd163",
"url": "https://api.github.com/repos/vimeo/psalm/zipball/c9b192ab8400fdaf04b2b13d110575adc879aa90",
"reference": "c9b192ab8400fdaf04b2b13d110575adc879aa90",
"shasum": ""
},
"require": {
@@ -5421,9 +5420,9 @@
],
"support": {
"issues": "https://github.com/vimeo/psalm/issues",
"source": "https://github.com/vimeo/psalm/tree/5.9.0"
"source": "https://github.com/vimeo/psalm/tree/5.11.0"
},
"time": "2023-03-29T21:38:21+00:00"
"time": "2023-05-04T21:35:44+00:00"
},
{
"name": "webmozart/assert",

View File

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

View File

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

View File

@@ -175,6 +175,7 @@ OC.L10N.register(
"Owner" : "Proprietario",
"Delete" : "Elimina",
"Failed to create share with {displayName}" : "Creazione della condivisione con {displayName} non riuscita",
"Transfer the board." : "Trasferisci la bacheca.",
"Transfer" : "Trasferisci",
"Archive all cards" : "Archivia tutte le schede",
"Delete list" : "Elimina elenco",
@@ -290,6 +291,8 @@ OC.L10N.register(
"Share with a Deck card" : "Condividi con una scheda di Deck",
"Share {file} with a Deck card" : "Condividi {file} con una scheda di Deck",
"Share" : "Condividi",
"Transfer the board for {user} successfully" : "Trasferimento della bacheca per {user} avvenuta con successo.",
"Failed to transfer the board for {user}" : "Trasferimento della bacheca per {user} fallito",
"Add a new list" : "Aggiungi un nuovo elenco",
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Sei sicuro di voler eliminare la lavagna {title}? Questo eliminerà tutti i dati di questa lavagna?"
},

View File

@@ -173,6 +173,7 @@
"Owner" : "Proprietario",
"Delete" : "Elimina",
"Failed to create share with {displayName}" : "Creazione della condivisione con {displayName} non riuscita",
"Transfer the board." : "Trasferisci la bacheca.",
"Transfer" : "Trasferisci",
"Archive all cards" : "Archivia tutte le schede",
"Delete list" : "Elimina elenco",
@@ -288,6 +289,8 @@
"Share with a Deck card" : "Condividi con una scheda di Deck",
"Share {file} with a Deck card" : "Condividi {file} con una scheda di Deck",
"Share" : "Condividi",
"Transfer the board for {user} successfully" : "Trasferimento della bacheca per {user} avvenuta con successo.",
"Failed to transfer the board for {user}" : "Trasferimento della bacheca per {user} fallito",
"Add a new list" : "Aggiungi un nuovo elenco",
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Sei sicuro di voler eliminare la lavagna {title}? Questo eliminerà tutti i dati di questa lavagna?"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"

View File

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

View File

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

View File

@@ -128,7 +128,7 @@ OC.L10N.register(
"Create card" : "Kart ekle",
"Select a card" : "Bir kart seçin",
"Select the card to link to a project" : "Bir proje ile ilişkilendirilecek kart bağlantısını seçin",
"Link to card" : "Kart ile ilişkilendir",
"Link to card" : "Kart bağlantısı",
"File already exists" : "Dosya zaten var",
"A file with the name {filename} already exists." : "{filename} adlı bir dosya zaten var.",
"Do you want to overwrite it?" : "Üzerine yazmak ister misiniz?",
@@ -305,8 +305,8 @@ OC.L10N.register(
"upcoming cards" : "yaklaşan kartlar",
"New card" : "Kart ekle",
"Due on {date}" : "{date} tarihinde bitecek",
"Link to a board" : "Bir pano ile ilişkilendir",
"Link to a card" : "Bir kart ile ilişkilendir",
"Link to a board" : "Bir pano bağlantısı",
"Link to a card" : "Bir kart bağlantısı",
"Create a card" : "Bir kart ekle",
"Message from {author} in {conversationName}" : "{conversationName} görüşmesinde {author} iletisi",
"Something went wrong" : "Bir şeyler ters gitti",

View File

@@ -126,7 +126,7 @@
"Create card" : "Kart ekle",
"Select a card" : "Bir kart seçin",
"Select the card to link to a project" : "Bir proje ile ilişkilendirilecek kart bağlantısını seçin",
"Link to card" : "Kart ile ilişkilendir",
"Link to card" : "Kart bağlantısı",
"File already exists" : "Dosya zaten var",
"A file with the name {filename} already exists." : "{filename} adlı bir dosya zaten var.",
"Do you want to overwrite it?" : "Üzerine yazmak ister misiniz?",
@@ -303,8 +303,8 @@
"upcoming cards" : "yaklaşan kartlar",
"New card" : "Kart ekle",
"Due on {date}" : "{date} tarihinde bitecek",
"Link to a board" : "Bir pano ile ilişkilendir",
"Link to a card" : "Bir kart ile ilişkilendir",
"Link to a board" : "Bir pano bağlantısı",
"Link to a card" : "Bir kart bağlantısı",
"Create a card" : "Bir kart ekle",
"Message from {author} in {conversationName}" : "{conversationName} görüşmesinde {author} iletisi",
"Something went wrong" : "Bir şeyler ters gitti",

View File

@@ -34,6 +34,7 @@ OC.L10N.register(
"You have updated the description of card {card} in list {stack} on board {board}" : "Ви оновили опис картки {card} у списку {stack} на дошці {board}",
"Deck" : "Колода",
"Changes in the <strong>Deck app</strong>" : "Зміни у застосунку <strong>Колода</strong>",
"Upcoming cards" : "Очікують на виконання",
"Load more" : "Більше",
"Personal" : "Особисте",
"Deck board" : "Дошка Deck",
@@ -64,8 +65,10 @@ OC.L10N.register(
"Select the board to link to a project" : "Виберіть дошку для прив'зки до проєкту",
"Search by board title" : "Шукати за назвою дошки",
"Select board" : "Вибрати дошку",
"Create a new card" : "Створити нову картку",
"Select a board" : "Вибрати дошку",
"Select a list" : "Виберіть список",
"Card title" : "Заголовок картки",
"Cancel" : "Скасувати",
"Close" : "закрити",
"Select a card" : "Вибрати картку",
@@ -97,6 +100,7 @@ OC.L10N.register(
"Toggle compact mode" : "Перемкнути компактний вигляд",
"Details" : "Деталі",
"Loading board" : "Завантаження дошки",
"Create a new list to add cards to this board" : "Створіть список щоб додати картки на цю дошку",
"Board not found" : "Дошку не знайдено",
"Sharing" : "Поділитися",
"Tags" : "Теги",
@@ -120,6 +124,7 @@ OC.L10N.register(
"Edit" : "Редагувати",
"Add a new tag" : "Додати нову позначку",
"title and color value must be provided" : "потрібно зазначити назву та колір",
"Board name" : "Назва дошки",
"Members" : "Учасники",
"Upload new files" : "Додати файл",
"Share from Files" : "Відкрити Файли",
@@ -133,6 +138,7 @@ OC.L10N.register(
"Comments" : "Коментарі",
"Modified" : "Змінено",
"Created" : "Створено",
"No comments yet. Begin the discussion!" : "Коментарів немає, почніть обговорення!",
"Assign a tag to this card…" : "Додати позначку до цієї картки",
"Assign to users" : "Призначити користувачам",
"Assign to users/groups/circles" : "Призначити користувачам/групам/колам",
@@ -153,13 +159,15 @@ OC.L10N.register(
"Description" : "Опис",
"(Unsaved)" : "(Не збережено)",
"(Saving…)" : "(Зберігання...)",
"Formatting help" : "Форматування довідки",
"Formatting help" : "Допомога",
"Edit description" : "Редагувати опис",
"View description" : "Переглянути опис",
"Add Attachment" : "Долучити вкладення",
"Write a description …" : "Додайте опис ...",
"Choose attachment" : "Вибрати вкладення",
"(group)" : "(група)",
"Todo items" : "Пункти завдань",
"Edit card title" : "Редагувати заголовок картки",
"Assign to me" : "Призначити мені",
"Move card" : "Пересунути картку",
"Card details" : "Деталі картки",
@@ -171,13 +179,19 @@ OC.L10N.register(
"All boards" : "Усі дошки",
"Archived boards" : "Архівні дошки",
"Shared with you" : "Вам надано доступ",
"Deck settings" : "Налаштування колоди",
"Use bigger card view" : "Режим перегляду зі збільшеними картками",
"Show boards in calendar/tasks" : "Показувати дошки в календарі та завданнях",
"Limit deck usage of groups" : "Обмежити доступ до колоди для груп",
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Створення власних робочих дощок користувачам, які не входять у задані групи, буде заблоковано. Проте, такі користувачі зможуть продовжити працювати зі спільними дошками, до яких у них є доступ.",
"Board details" : "Деталі дошки",
"Edit board" : "Редагувати дошку",
"Clone board" : "Копіювати дошку",
"Unarchive board" : "Розархівувати дошку",
"Archive board" : "Архівувати дошку",
"Turn on due date reminders" : "Нагадування про термін виконання",
"Turn off due date reminders" : "Вимкнути нагадування про терміни виконання",
"Due date reminders" : "Нагадування про терміни виконання",
"No notifications" : "Немає сповіщень",
"Delete board" : "Вилучити дошку",
"Board {0} deleted" : "Дошку {0} вилучено",
@@ -185,6 +199,9 @@ OC.L10N.register(
"An error occurred" : "Виникла помилка",
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "Ви впевнені, що хочете вилучити дошку {title}? Це призведе до видалення всіх даних цієї дошки, включаючи архівні картки.",
"Delete the board?" : "Вилучити дошку?",
"No due" : "Без призначеної дати",
"No upcoming cards" : "Немає майбутніх завдань",
"upcoming cards" : "очікують на виконання",
"Due on {date}" : "До {date}",
"Link to a board" : "Прив'язати до дошки",
"Link to a card" : "Прив'язати до картки",

View File

@@ -32,6 +32,7 @@
"You have updated the description of card {card} in list {stack} on board {board}" : "Ви оновили опис картки {card} у списку {stack} на дошці {board}",
"Deck" : "Колода",
"Changes in the <strong>Deck app</strong>" : "Зміни у застосунку <strong>Колода</strong>",
"Upcoming cards" : "Очікують на виконання",
"Load more" : "Більше",
"Personal" : "Особисте",
"Deck board" : "Дошка Deck",
@@ -62,8 +63,10 @@
"Select the board to link to a project" : "Виберіть дошку для прив'зки до проєкту",
"Search by board title" : "Шукати за назвою дошки",
"Select board" : "Вибрати дошку",
"Create a new card" : "Створити нову картку",
"Select a board" : "Вибрати дошку",
"Select a list" : "Виберіть список",
"Card title" : "Заголовок картки",
"Cancel" : "Скасувати",
"Close" : "закрити",
"Select a card" : "Вибрати картку",
@@ -95,6 +98,7 @@
"Toggle compact mode" : "Перемкнути компактний вигляд",
"Details" : "Деталі",
"Loading board" : "Завантаження дошки",
"Create a new list to add cards to this board" : "Створіть список щоб додати картки на цю дошку",
"Board not found" : "Дошку не знайдено",
"Sharing" : "Поділитися",
"Tags" : "Теги",
@@ -118,6 +122,7 @@
"Edit" : "Редагувати",
"Add a new tag" : "Додати нову позначку",
"title and color value must be provided" : "потрібно зазначити назву та колір",
"Board name" : "Назва дошки",
"Members" : "Учасники",
"Upload new files" : "Додати файл",
"Share from Files" : "Відкрити Файли",
@@ -131,6 +136,7 @@
"Comments" : "Коментарі",
"Modified" : "Змінено",
"Created" : "Створено",
"No comments yet. Begin the discussion!" : "Коментарів немає, почніть обговорення!",
"Assign a tag to this card…" : "Додати позначку до цієї картки",
"Assign to users" : "Призначити користувачам",
"Assign to users/groups/circles" : "Призначити користувачам/групам/колам",
@@ -151,13 +157,15 @@
"Description" : "Опис",
"(Unsaved)" : "(Не збережено)",
"(Saving…)" : "(Зберігання...)",
"Formatting help" : "Форматування довідки",
"Formatting help" : "Допомога",
"Edit description" : "Редагувати опис",
"View description" : "Переглянути опис",
"Add Attachment" : "Долучити вкладення",
"Write a description …" : "Додайте опис ...",
"Choose attachment" : "Вибрати вкладення",
"(group)" : "(група)",
"Todo items" : "Пункти завдань",
"Edit card title" : "Редагувати заголовок картки",
"Assign to me" : "Призначити мені",
"Move card" : "Пересунути картку",
"Card details" : "Деталі картки",
@@ -169,13 +177,19 @@
"All boards" : "Усі дошки",
"Archived boards" : "Архівні дошки",
"Shared with you" : "Вам надано доступ",
"Deck settings" : "Налаштування колоди",
"Use bigger card view" : "Режим перегляду зі збільшеними картками",
"Show boards in calendar/tasks" : "Показувати дошки в календарі та завданнях",
"Limit deck usage of groups" : "Обмежити доступ до колоди для груп",
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Створення власних робочих дощок користувачам, які не входять у задані групи, буде заблоковано. Проте, такі користувачі зможуть продовжити працювати зі спільними дошками, до яких у них є доступ.",
"Board details" : "Деталі дошки",
"Edit board" : "Редагувати дошку",
"Clone board" : "Копіювати дошку",
"Unarchive board" : "Розархівувати дошку",
"Archive board" : "Архівувати дошку",
"Turn on due date reminders" : "Нагадування про термін виконання",
"Turn off due date reminders" : "Вимкнути нагадування про терміни виконання",
"Due date reminders" : "Нагадування про терміни виконання",
"No notifications" : "Немає сповіщень",
"Delete board" : "Вилучити дошку",
"Board {0} deleted" : "Дошку {0} вилучено",
@@ -183,6 +197,9 @@
"An error occurred" : "Виникла помилка",
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "Ви впевнені, що хочете вилучити дошку {title}? Це призведе до видалення всіх даних цієї дошки, включаючи архівні картки.",
"Delete the board?" : "Вилучити дошку?",
"No due" : "Без призначеної дати",
"No upcoming cards" : "Немає майбутніх завдань",
"upcoming cards" : "очікують на виконання",
"Due on {date}" : "До {date}",
"Link to a board" : "Прив'язати до дошки",
"Link to a card" : "Прив'язати до картки",

View File

@@ -186,28 +186,28 @@ class DeckProvider implements IProvider {
private function getIcon(IEvent $event) {
$event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('deck', 'deck-dark.svg')));
if (strpos($event->getSubject(), '_update') !== false) {
if (str_contains($event->getSubject(), '_update')) {
$event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('files', 'change.svg')));
}
if (strpos($event->getSubject(), '_create') !== false) {
if (str_contains($event->getSubject(), '_create')) {
$event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('files', 'add-color.svg')));
}
if (strpos($event->getSubject(), '_delete') !== false) {
if (str_contains($event->getSubject(), '_delete')) {
$event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('files', 'delete-color.svg')));
}
if (strpos($event->getSubject(), 'archive') !== false) {
if (str_contains($event->getSubject(), 'archive')) {
$event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('deck', 'archive.svg')));
}
if (strpos($event->getSubject(), '_restore') !== false) {
if (str_contains($event->getSubject(), '_restore')) {
$event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/history.svg')));
}
if (strpos($event->getSubject(), 'attachment_') !== false) {
if (str_contains($event->getSubject(), 'attachment_')) {
$event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'places/files.svg')));
}
if (strpos($event->getSubject(), 'comment_') !== false) {
if (str_contains($event->getSubject(), 'comment_')) {
$event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/comment.svg')));
}
if (strpos($event->getSubject(), 'label_') !== false) {
if (str_contains($event->getSubject(), 'label_')) {
$event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/tag.svg')));
}
return $event;

View File

@@ -53,7 +53,7 @@ class AttachmentController extends Controller {
* @throws \OCA\Deck\NotFoundException
*/
public function display($cardId, $attachmentId) {
if (strpos($attachmentId, ':') === false) {
if (!str_contains($attachmentId, ':')) {
$type = 'deck_file';
} else {
[$type, $attachmentId] = explode(':', $attachmentId);
@@ -76,7 +76,7 @@ class AttachmentController extends Controller {
* @NoAdminRequired
*/
public function update($cardId, $attachmentId) {
if (strpos($attachmentId, ':') === false) {
if (!str_contains($attachmentId, ':')) {
$type = 'deck_file';
} else {
[$type, $attachmentId] = explode(':', $attachmentId);
@@ -88,7 +88,7 @@ class AttachmentController extends Controller {
* @NoAdminRequired
*/
public function delete($cardId, $attachmentId) {
if (strpos($attachmentId, ':') === false) {
if (!str_contains($attachmentId, ':')) {
$type = 'deck_file';
} else {
[$type, $attachmentId] = explode(':', $attachmentId);
@@ -100,7 +100,7 @@ class AttachmentController extends Controller {
* @NoAdminRequired
*/
public function restore($cardId, $attachmentId) {
if (strpos($attachmentId, ':') === false) {
if (!str_contains($attachmentId, ':')) {
$type = 'deck_file';
} else {
[$type, $attachmentId] = explode(':', $attachmentId);

View File

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

View File

@@ -68,7 +68,7 @@ class RelationalEntity extends Entity implements \JsonSerializable {
$reflection = new \ReflectionClass($this);
$json = [];
foreach ($properties as $property => $value) {
if (strpos($property, '_') !== 0 && $reflection->hasProperty($property)) {
if (!str_starts_with($property, '_') && $reflection->hasProperty($property)) {
$propertyReflection = $reflection->getProperty($property);
if (!$propertyReflection->isPrivate() && !in_array($property, $this->_resolvedProperties, true)) {
$json[$property] = $this->getter($property);
@@ -129,7 +129,7 @@ class RelationalEntity extends Entity implements \JsonSerializable {
public function __call(string $methodName, array $args) {
$attr = lcfirst(substr($methodName, 7));
if (array_key_exists($attr, $this->_resolvedProperties) && strpos($methodName, 'resolve') === 0) {
if (array_key_exists($attr, $this->_resolvedProperties) && str_starts_with($methodName, 'resolve')) {
if ($this->_resolvedProperties[$attr] !== null) {
return $this->_resolvedProperties[$attr];
}
@@ -137,7 +137,7 @@ class RelationalEntity extends Entity implements \JsonSerializable {
}
$attr = lcfirst(substr($methodName, 3));
if (array_key_exists($attr, $this->_resolvedProperties) && strpos($methodName, 'set') === 0) {
if (array_key_exists($attr, $this->_resolvedProperties) && str_starts_with($methodName, 'set')) {
if (!is_scalar($args[0])) {
$args[0] = $args[0]['primaryKey'];
}

View File

@@ -51,11 +51,11 @@ class BeforeTemplateRenderedListener implements IEventListener {
Util::addStyle('deck', 'deck');
$pathInfo = $this->request->getPathInfo();
if (strpos($pathInfo, '/apps/calendar') === 0) {
if (str_starts_with($pathInfo, '/apps/calendar')) {
Util::addScript('deck', 'deck-calendar');
}
if (strpos($pathInfo, '/call/') === 0 || strpos($pathInfo, '/apps/spreed') === 0) {
if (str_starts_with($pathInfo, '/call/') || str_starts_with($pathInfo, '/apps/spreed')) {
Util::addScript('deck', 'deck-talk');
}
}

View File

@@ -21,7 +21,7 @@ class ResourceAdditionalScriptsListener implements IEventListener {
return;
}
if (strpos($this->request->getPathInfo(), '/call/') === 0) {
if (str_starts_with($this->request->getPathInfo(), '/call/')) {
// Talk integration has its own entrypoint which already includes collections handling
return;
}

View File

@@ -109,7 +109,7 @@ class ExceptionMiddleware extends Middleware {
], $exception->getStatus());
}
if (strpos(get_class($controller), 'OCA\\Deck\\Controller\\') === 0) {
if (str_starts_with(get_class($controller), 'OCA\\Deck\\Controller\\')) {
$response = [
'status' => 500,
'message' => $exceptionMessage,

View File

@@ -41,7 +41,7 @@ class FilterStringParser {
public function __construct(IL10N $l10n) {
$this->l10n = $l10n;
}
public function parse(?string $filter): SearchQuery {
$query = new SearchQuery();
if (empty($filter)) {
@@ -71,7 +71,7 @@ class FilterStringParser {
}
private function parseFilterToken(SearchQuery $query, string $token): bool {
if (strpos($token, ':') === false) {
if (!str_contains($token, ':')) {
return false;
}

View File

@@ -55,7 +55,7 @@ abstract class BaseValidator {
// The format for specifying validation rules and parameters follows an
// easy {rule}:{parameters} formatting convention. For instance the
// rule "Max:3" states that the value may only be three letters.
if (strpos($rule, ':') !== false) {
if (str_contains($rule, ':')) {
[$rule, $parameter] = explode(':', $rule, 2);
if (!$this->{$rule}($value, $parameter)) {
throw new BadRequestException(

66311
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,109 +1,107 @@
{
"name": "deck",
"description": "",
"version": "1.10.0-dev",
"authors": [
{
"name": "Julius Härtl",
"email": "jus@bitgrid.net",
"role": "Developer"
},
{
"name": "Michael Weimann",
"email": "mail@michael-weimann.eu",
"role": "Developer"
}
],
"license": "agpl",
"private": true,
"scripts": {
"build": "NODE_ENV=production webpack --progress --config webpack.js",
"dev": "NODE_ENV=development webpack --progress --config webpack.js",
"watch": "NODE_ENV=development webpack --progress --watch --config webpack.js",
"lint": "eslint --ext .js,.vue src",
"lint:fix": "eslint --ext .js,.vue src --fix",
"lint:cypress": "eslint --ext .js cypress",
"stylelint": "stylelint src",
"stylelint:fix": "stylelint src --fix",
"test": "jest",
"test:coverage": "jest --coverage"
},
"dependencies": {
"@babel/polyfill": "^7.12.1",
"@babel/runtime": "^7.21.0",
"@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.0.1",
"@nextcloud/vue": "^7.8.4",
"@nextcloud/vue-dashboard": "^2.0.1",
"@nextcloud/vue-richtext": "^2.0.4",
"blueimp-md5": "^2.19.0",
"dompurify": "^3.0.2",
"lodash": "^4.17.21",
"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.0",
"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",
"vue-infinite-loading": "^2.4.5",
"vue-material-design-icons": "^5.2.0",
"vue-router": "^3.6.5",
"vue-smooth-dnd": "^0.8.1",
"vuex": "^3.6.2",
"vuex-router-sync": "^5.0.0"
},
"browserslist": [
"extends @nextcloud/browserslist-config"
],
"engines": {
"node": "^16.0.0",
"npm": "^7.0.0 || ^8.0.0"
},
"devDependencies": {
"@nextcloud/babel-config": "^1.0.0",
"@nextcloud/browserslist-config": "^2.3.0",
"@nextcloud/cypress": "^1.0.0-beta.2",
"@nextcloud/eslint-config": "^8.2.1",
"@nextcloud/stylelint-config": "^2.3.0",
"@nextcloud/webpack-vue-config": "^5.5.0",
"@relative-ci/agent": "^4.1.3",
"@vue/test-utils": "^1.3.5",
"@vue/vue2-jest": "^29.2.3",
"cypress": "^12.9.0",
"eslint-plugin-cypress": "^2.13.2",
"eslint-webpack-plugin": "^4.0.1",
"jest": "^29.5.0",
"jest-serializer-vue": "^3.1.0",
"stylelint-webpack-plugin": "^4.1.1",
"vue-template-compiler": "^2.7.14"
},
"jest": {
"moduleFileExtensions": [
"js",
"vue"
],
"moduleNameMapper": {
"^@/(.*)$": "<rootDir>/src/$1"
},
"transform": {
"^.+\\.js$": "<rootDir>/node_modules/babel-jest",
".*\\.(vue)$": "<rootDir>/node_modules/vue-jest"
},
"snapshotSerializers": [
"<rootDir>/node_modules/jest-serializer-vue"
]
}
}
"name": "deck",
"description": "",
"version": "1.10.0-beta.2",
"authors": [
{
"name": "Julius Härtl",
"email": "jus@bitgrid.net",
"role": "Developer"
},
{
"name": "Michael Weimann",
"email": "mail@michael-weimann.eu",
"role": "Developer"
}
],
"license": "agpl",
"private": true,
"scripts": {
"build": "NODE_ENV=production webpack --progress --config webpack.js",
"dev": "NODE_ENV=development webpack --progress --config webpack.js",
"watch": "NODE_ENV=development webpack --progress --watch --config webpack.js",
"lint": "eslint --ext .js,.vue src",
"lint:fix": "eslint --ext .js,.vue src --fix",
"lint:cypress": "eslint --ext .js cypress",
"stylelint": "stylelint src",
"stylelint:fix": "stylelint src --fix",
"test": "jest",
"test:coverage": "jest --coverage"
},
"dependencies": {
"@babel/polyfill": "^7.12.1",
"@babel/runtime": "^7.21.5",
"@nextcloud/auth": "^2.0.0",
"@nextcloud/axios": "^2.3.0",
"@nextcloud/dialogs": "^4.0.1",
"@nextcloud/event-bus": "^3.0.2",
"@nextcloud/files": "^2.1.0",
"@nextcloud/initial-state": "^2.0.0",
"@nextcloud/l10n": "^2.1.0",
"@nextcloud/moment": "^1.2.1",
"@nextcloud/notify_push": "^1.1.3",
"@nextcloud/router": "^2.1.1",
"@nextcloud/vue": "^7.11.4",
"blueimp-md5": "^2.19.0",
"dompurify": "^3.0.3",
"lodash": "^4.17.21",
"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.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",
"vue-infinite-loading": "^2.4.5",
"vue-material-design-icons": "^5.2.0",
"vue-router": "^3.6.5",
"vue-smooth-dnd": "^0.8.1",
"vuex": "^3.6.2",
"vuex-router-sync": "^5.0.0"
},
"browserslist": [
"extends @nextcloud/browserslist-config"
],
"engines": {
"node": "^16.0.0",
"npm": "^7.0.0 || ^8.0.0"
},
"devDependencies": {
"@nextcloud/babel-config": "^1.0.0",
"@nextcloud/browserslist-config": "^2.3.0",
"@nextcloud/cypress": "^1.0.0-beta.2",
"@nextcloud/eslint-config": "^8.2.1",
"@nextcloud/stylelint-config": "^2.3.0",
"@nextcloud/webpack-vue-config": "^5.5.1",
"@relative-ci/agent": "^4.1.4",
"@vue/test-utils": "^1.3.5",
"@vue/vue2-jest": "^29.2.4",
"cypress": "^12.12.0",
"eslint-plugin-cypress": "^2.13.3",
"eslint-webpack-plugin": "^4.0.1",
"jest": "^29.5.0",
"jest-serializer-vue": "^3.1.0",
"stylelint-webpack-plugin": "^4.1.1",
"vue-template-compiler": "^2.7.14"
},
"jest": {
"moduleFileExtensions": [
"js",
"vue"
],
"moduleNameMapper": {
"^@/(.*)$": "<rootDir>/src/$1"
},
"transform": {
"^.+\\.js$": "<rootDir>/node_modules/babel-jest",
".*\\.(vue)$": "<rootDir>/node_modules/vue-jest"
},
"snapshotSerializers": [
"<rootDir>/node_modules/jest-serializer-vue"
]
}
}

View File

@@ -167,7 +167,7 @@ export default {
}
.avatardiv.circles {
background: var(--color-primary);
background: var(--color-primary-element);
}
.icon-circles {

View File

@@ -110,7 +110,7 @@ export default {
}
li.selected {
border: 1px solid var(--color-primary);
border: 1px solid var(--color-primary-element);
}
.board-bullet {

View File

@@ -24,7 +24,7 @@
<div v-if="activity" class="activity">
<div class="activity--header">
<img :src="activity.icon" class="activity--icon">
<RichText class="activity--subject" :text="message.subject" :arguments="message.parameters" />
<NcRichText class="activity--subject" :text="message.subject" :arguments="message.parameters" />
<div class="activity--timestamp">
{{ relativeDate(activity.datetime) }}
</div>
@@ -35,8 +35,7 @@
</template>
<script>
import { RichText } from '@nextcloud/vue-richtext'
import { NcUserBubble } from '@nextcloud/vue'
import { NcRichText, NcUserBubble } from '@nextcloud/vue'
import moment from '@nextcloud/moment'
import DOMPurify from 'dompurify'
import relativeDate from '../mixins/relativeDate.js'
@@ -61,7 +60,7 @@ const InternalLink = {
export default {
name: 'ActivityEntry',
components: {
RichText,
NcRichText,
},
mixins: [relativeDate],
props: {

View File

@@ -136,7 +136,7 @@ export default {
.dragover {
position: absolute;
background: var(--color-primary-light);
background: var(--color-primary-element-light);
z-index: 11;
display: flex;
border-radius: var(--border-radius);

View File

@@ -27,31 +27,39 @@
@close="closeSidebar">
<NcAppSidebarTab id="sharing"
:order="0"
:name="t('deck', 'Sharing')"
icon="icon-shared">
:name="t('deck', 'Sharing')">
<template #icon>
<SharingIcon :size="20" />
</template>
<SharingTabSidebar :board="board" />
</NcAppSidebarTab>
<NcAppSidebarTab id="tags"
:order="1"
:name="t('deck', 'Tags')"
icon="icon-tag">
:name="t('deck', 'Tags')">
<template #icon>
<TagsIcon :size="20" />
</template>
<TagsTabSidebar :board="board" />
</NcAppSidebarTab>
<NcAppSidebarTab v-if="canEdit"
id="deleted"
:order="2"
:name="t('deck', 'Deleted items')"
icon="icon-delete">
:name="t('deck', 'Deleted items')">
<template #icon>
<TrashIcon :size="20" />
</template>
<DeletedTabSidebar :board="board" />
</NcAppSidebarTab>
<NcAppSidebarTab v-if="hasActivity"
id="activity"
:order="3"
:name="t('deck', 'Timeline')"
icon="icon-activity">
:name="t('deck', 'Timeline')">
<template #icon>
<ActivityIcon :size="20" />
</template>
<TimelineTabSidebar :board="board" />
</NcAppSidebarTab>
</NcAppSidebar>
@@ -64,7 +72,10 @@ import TagsTabSidebar from './TagsTabSidebar.vue'
import DeletedTabSidebar from './DeletedTabSidebar.vue'
import TimelineTabSidebar from './TimelineTabSidebar.vue'
import { NcAppSidebar, NcAppSidebarTab } from '@nextcloud/vue'
import ActivityIcon from 'vue-material-design-icons/LightningBolt.vue'
import SharingIcon from 'vue-material-design-icons/ShareVariant.vue'
import TagsIcon from 'vue-material-design-icons/TagMultiple.vue'
import TrashIcon from 'vue-material-design-icons/Delete.vue'
const capabilities = window.OC.getCapabilities()
export default {
@@ -76,6 +87,10 @@ export default {
TagsTabSidebar,
DeletedTabSidebar,
TimelineTabSidebar,
ActivityIcon,
SharingIcon,
TagsIcon,
TrashIcon,
},
props: {
id: {

View File

@@ -50,32 +50,38 @@
<NcAppSidebarTab id="details"
:order="0"
:name="t('deck', 'Details')"
icon="icon-home">
:name="t('deck', 'Details')">
<CardSidebarTabDetails :card="currentCard" />
<template #icon>
<HomeIcon :size="20" />
</template>
</NcAppSidebarTab>
<NcAppSidebarTab id="attachments"
:order="1"
:name="t('deck', 'Attachments')">
<template #icon>
<AttachmentIcon :size="20" decorative />
<AttachmentIcon :size="20" />
</template>
<CardSidebarTabAttachments :card="currentCard" />
</NcAppSidebarTab>
<NcAppSidebarTab id="comments"
:order="2"
:name="t('deck', 'Comments')"
icon="icon-comment">
:name="t('deck', 'Comments')">
<template #icon>
<CommentIcon :size="20" />
</template>
<CardSidebarTabComments :card="currentCard" :tab-query="tabQuery" />
</NcAppSidebarTab>
<NcAppSidebarTab v-if="hasActivity"
id="timeline"
:order="3"
:name="t('deck', 'Timeline')"
icon="icon-activity">
:name="t('deck', 'Timeline')">
<template #icon>
<ActivityIcon :size="20" />
</template>
<CardSidebarTabActivity :card="currentCard" />
</NcAppSidebarTab>
</NcAppSidebar>
@@ -92,6 +98,9 @@ import CardSidebarTabActivity from './CardSidebarTabActivity.vue'
import relativeDate from '../../mixins/relativeDate.js'
import moment from '@nextcloud/moment'
import AttachmentIcon from 'vue-material-design-icons/Paperclip.vue'
import HomeIcon from 'vue-material-design-icons/Home.vue'
import CommentIcon from 'vue-material-design-icons/Comment.vue'
import ActivityIcon from 'vue-material-design-icons/LightningBolt.vue'
import { showError } from '@nextcloud/dialogs'
import { getLocale } from '@nextcloud/l10n'
@@ -108,7 +117,10 @@ export default {
CardSidebarTabComments,
CardSidebarTabActivity,
CardSidebarTabDetails,
ActivityIcon,
AttachmentIcon,
CommentIcon,
HomeIcon,
},
mixins: [relativeDate],
props: {
@@ -147,10 +159,10 @@ export default {
return this.$store.getters.cardById(this.id)
},
subtitle() {
return '<strong>' + t('deck', 'Created') + ' :</strong> ' + this.relativeDate(this.currentCard.createdAt * 1000) + '<br><strong>' + t('deck', 'Modified') + ' :</strong> ' + this.relativeDate(this.currentCard.lastModified * 1000)
return t('deck', 'Modified') + ': ' + this.relativeDate(this.currentCard.lastModified * 1000) + '' + t('deck', 'Created') + ': ' + this.relativeDate(this.currentCard.createdAt * 1000)
},
subtitleTooltip() {
return t('deck', 'Created') + ' : ' + this.formatDate(this.currentCard.createdAt) + '\n' + t('deck', 'Modified') + ' : ' + this.formatDate(this.currentCard.lastModified)
return t('deck', 'Modified') + ': ' + this.formatDate(this.currentCard.lastModified) + '\n' + t('deck', 'Created') + ': ' + this.formatDate(this.currentCard.createdAt)
},
cardRichObject() {
return {

View File

@@ -103,6 +103,7 @@
:formatter="format"
:disabled="saving || !canEdit"
:shortcuts="shortcuts"
:append-to-body="true"
confirm />
<NcActions v-if="canEdit">
<NcActionButton v-if="copiedCard.duedate" icon="icon-delete" @click="removeDue()">
@@ -448,5 +449,10 @@ export default {
.multiselect.multiselect--active:deep(.multiselect__tags-wrap) {
z-index: 0;
}
</style>
<style>
.mx-datepicker-main.mx-datepicker-popup {
/* above the modal */
z-index: 9999 !important;
}
</style>

View File

@@ -12,7 +12,7 @@
</NcActionButton>
</NcActions>
</div>
<RichText class="comment--content"
<NcRichText class="comment--content"
:text="richText(comment)"
:arguments="richArgs(comment)"
:autolink="true" />
@@ -54,7 +54,7 @@
</div>
<CommentItem v-if="comment.replyTo" :reply="true" :comment="comment.replyTo" />
<div v-show="!edit" ref="richTextElement">
<RichText class="comment--content"
<NcRichText class="comment--content"
:text="richText(comment)"
:arguments="richArgs(comment)"
:autolink="true" />
@@ -64,8 +64,7 @@
</template>
<script>
import { NcAvatar, NcActions, NcActionButton, NcUserBubble } from '@nextcloud/vue'
import { RichText } from '@nextcloud/vue-richtext'
import { NcAvatar, NcActions, NcActionButton, NcRichText, NcUserBubble } from '@nextcloud/vue'
import CommentForm from './CommentForm.vue'
import { getCurrentUser } from '@nextcloud/auth'
import md5 from 'blueimp-md5'
@@ -93,7 +92,7 @@ export default {
NcActions,
NcActionButton,
CommentForm,
RichText,
NcRichText,
ReplyIcon,
},
mixins: [relativeDate],

View File

@@ -392,7 +392,7 @@ h5 {
.CodeMirror-selected,
.CodeMirror-line::selection, .CodeMirror-line>span::selection, .CodeMirror-line>span>span::selection {
background: var(--color-primary-element) !important;
color: var(--color-primary-text) !important;
color: var(--color-primary-element-text) !important;
}
.editor-preview,
@@ -417,7 +417,7 @@ h5 {
.app-sidebar__tab .description__text .text-menubar {
top: -10px !important;
z-index: 100;
z-index: 1;
}
.modal__card .description__text .text-menubar {

View File

@@ -133,7 +133,7 @@ export default {
&.overdue {
background-color: var(--color-error);
color: var(--color-primary-text);
color: var(--color-primary-element-text);
opacity: .7;
}
&.now {

View File

@@ -90,7 +90,7 @@ export default {
&.overdue {
background-color: var(--color-error);
color: var(--color-primary-text);
color: var(--color-primary-element-text);
opacity: .7;
padding: 3px 4px;
}

View File

@@ -31,7 +31,7 @@
</div>
<div v-else-if="isValidFilter" class="overview">
<div v-if="assignedCardsDashboard.length > 0" class="dashboard-column">
<div class="dashboard-column">
<h3>{{ t('deck', 'Overdue') }}</h3>
<div v-for="card in assignedCardsDashboard.overdue" :key="card.id">
<CardItem :id="card.id" />

View File

@@ -23,7 +23,7 @@
<template>
<div v-if="searchQuery!==''" class="global-search">
<h2>
<RichText :text="t('deck', 'Search for {searchQuery} in all boards')" :arguments="queryStringArgs" />
<NcRichText :text="t('deck', 'Search for {searchQuery} in all boards')" :arguments="queryStringArgs" />
<div v-if="loading" class="icon-loading-small" />
</h2>
<NcActions>
@@ -57,9 +57,8 @@ import { mapState } from 'vuex'
import axios from '@nextcloud/axios'
import { generateOcsUrl } from '@nextcloud/router'
import InfiniteLoading from 'vue-infinite-loading'
import { RichText } from '@nextcloud/vue-richtext'
import Placeholder from './Placeholder.vue'
import { NcActions, NcActionButton } from '@nextcloud/vue'
import { NcActions, NcActionButton, NcRichText } from '@nextcloud/vue'
const createCancelToken = () => axios.CancelToken.source()
@@ -88,7 +87,7 @@ function search({ query, cursor }) {
export default {
name: 'GlobalSearchResults',
components: { CardItem, InfiniteLoading, RichText, Placeholder, NcActions, NcActionButton },
components: { CardItem, InfiniteLoading, NcRichText, Placeholder, NcActions, NcActionButton },
data() {
return {
results: [],

View File

@@ -33,7 +33,8 @@ document.addEventListener('DOMContentLoaded', () => {
OCA.Dashboard.register('deck', async (el) => {
const { default: Vue } = await import('vue')
const { default: Vuex } = await import('vuex')
const { default: overview } = await import('./store/overview.js')
const { default: dashboard } = await import('./store/dashboard.js')
const { default: Dashboard } = await import('./views/Dashboard.vue')
Vue.prototype.t = t
Vue.prototype.n = n
@@ -42,7 +43,7 @@ document.addEventListener('DOMContentLoaded', () => {
const store = new Vuex.Store({
modules: {
overview,
dashboard,
},
strict: debug,
})

View File

@@ -19,7 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import { registerWidget } from '@nextcloud/vue-richtext'
import { registerWidget } from '@nextcloud/vue/dist/Components/NcRichText.js'
import { Tooltip } from '@nextcloud/vue'
import Vue from 'vue'
import CardReferenceWidget from './views/CardReferenceWidget.vue'

51
src/store/dashboard.js Normal file
View File

@@ -0,0 +1,51 @@
/*
* @copyright Copyright (c) 2020 Jakob Röhrl <jakob.roehrl@web.de>
*
* @author Jakob Röhrl <jakob.roehrl@web.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/>.
*
*/
import Vue from 'vue'
import Vuex from 'vuex'
import { OverviewApi } from '../services/OverviewApi.js'
Vue.use(Vuex)
const apiClient = new OverviewApi()
export default {
state: {
assignedCards: [],
},
getters: {
assignedCardsDashboard: state => {
return Object.values(state.assignedCards).flat()
},
},
mutations: {
setAssignedCards(state, assignedCards) {
state.assignedCards = assignedCards
},
},
actions: {
async loadUpcoming({ commit }) {
const upcommingCards = await apiClient.get('upcoming')
commit('setAssignedCards', upcommingCards)
},
},
}

View File

@@ -67,7 +67,7 @@
'description': true,
'short-description': shortDescription,
}">
<RichText v-tooltip.top="{ content: shortDescription ? t('deck', 'Click to expand description') : undefined }"
<NcRichText v-tooltip.top="{ content: shortDescription ? t('deck', 'Click to expand description') : undefined }"
:text="card.description"
:use-markdown="true"
@click.native="shortDescription = !shortDescription" />
@@ -90,7 +90,7 @@ import DeckIcon from '../components/icons/DeckIcon.vue'
import AvatarList from '../components/cards/AvatarList.vue'
import labelStyle from '../mixins/labelStyle.js'
import { RichText } from '@nextcloud/vue-richtext'
import { NcRichText } from '@nextcloud/vue'
import moment from '@nextcloud/moment'
import { generateUrl } from '@nextcloud/router'
@@ -103,7 +103,7 @@ export default {
CalendarBlankIcon,
CardBulletedOutlineIcon,
TextIcon,
RichText,
NcRichText,
},
mixins: [labelStyle],

View File

@@ -67,7 +67,7 @@
'description': true,
'short-description': shortDescription,
}">
<RichText v-tooltip.top="{ content: shortDescription ? t('deck', 'Click to expand description') : undefined }"
<NcRichText v-tooltip.top="{ content: shortDescription ? t('deck', 'Click to expand description') : undefined }"
:text="card.description"
:use-markdown="true"
@click.native="shortDescription = !shortDescription" />
@@ -84,7 +84,7 @@
'comment': true,
'short-comment': shortComment,
}">
<RichText v-tooltip.top="{ content: shortComment ? t('deck', 'Click to expand comment') : undefined }"
<NcRichText v-tooltip.top="{ content: shortComment ? t('deck', 'Click to expand comment') : undefined }"
:text="commentMessageText"
:use-markdown="false"
@click.native="shortComment = !shortComment" />
@@ -103,7 +103,7 @@ import DeckIcon from '../components/icons/DeckIcon.vue'
import AvatarList from '../components/cards/AvatarList.vue'
import labelStyle from '../mixins/labelStyle.js'
import { RichText } from '@nextcloud/vue-richtext'
import { NcRichText } from '@nextcloud/vue'
import moment from '@nextcloud/moment'
import { generateUrl } from '@nextcloud/router'
@@ -116,7 +116,7 @@ export default {
CalendarBlankIcon,
TextIcon,
CardBulletedOutlineIcon,
RichText,
NcRichText,
CommentProcessingOutlineIcon,
},

View File

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

View File

@@ -98,7 +98,7 @@ class ActivityManagerTest extends TestCase {
->willReturn($this->l10n);
foreach ($managerClass->getConstants() as $constant => $value) {
if (strpos($constant, 'SUBJECT') === 0) {
if (str_starts_with($constant, 'SUBJECT')) {
$format = $this->activityManager->getActivityFormat('cz', $value, [], false);
if ($format !== '') {
$this->assertStringContainsString('{user}', $format);