Compare commits
66 Commits
Jerome-Her
...
v1.10.0-be
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6cda378fe2 | ||
|
|
c3e2aec149 | ||
|
|
b9c8e8f315 | ||
|
|
b8566a3a0d | ||
|
|
d028728407 | ||
|
|
c31891654c | ||
|
|
e7c04ac19f | ||
|
|
7f250e8ae3 | ||
|
|
ca8dfd8cab | ||
|
|
ee55bc56fa | ||
|
|
ff234f68e1 | ||
|
|
dc344e4d50 | ||
|
|
446bfcd22b | ||
|
|
29cce7fde6 | ||
|
|
e025d10aca | ||
|
|
2e316331cc | ||
|
|
65fabe15f7 | ||
|
|
3f34577064 | ||
|
|
284ca3d202 | ||
|
|
270c4658b8 | ||
|
|
b189146a05 | ||
|
|
b2d035f05d | ||
|
|
9f72a230b5 | ||
|
|
6a2d36d10f | ||
|
|
eb38112605 | ||
|
|
b9629abc96 | ||
|
|
6acdfe4d1c | ||
|
|
0f50af9d0a | ||
|
|
c15fbcab0b | ||
|
|
24ab06109f | ||
|
|
25e901060e | ||
|
|
9d49aeb80b | ||
|
|
194f920161 | ||
|
|
8379a88b3e | ||
|
|
741e4be749 | ||
|
|
42aff58c6e | ||
|
|
e2a4737fdb | ||
|
|
7f6895aa7a | ||
|
|
14d686a6bc | ||
|
|
b76c85f187 | ||
|
|
aea3f19c82 | ||
|
|
f98004f343 | ||
|
|
2066080e56 | ||
|
|
df0db786be | ||
|
|
8f7712011f | ||
|
|
ee308c8afd | ||
|
|
bd9538d143 | ||
|
|
0c825addb1 | ||
|
|
ff8b010d78 | ||
|
|
d27c083bcc | ||
|
|
a7b2c65387 | ||
|
|
693babf89a | ||
|
|
0cf124c8b1 | ||
|
|
95f6cfe748 | ||
|
|
3e39db784c | ||
|
|
fbbe30be6d | ||
|
|
7fb0822ce8 | ||
|
|
8329caa94a | ||
|
|
bf015cd951 | ||
|
|
bee0fde025 | ||
|
|
f18069c504 | ||
|
|
8b410a453a | ||
|
|
5c9ad85c7e | ||
|
|
42c8e90abb | ||
|
|
bf37cc2ed8 | ||
|
|
faac607b75 |
4
.github/workflows/appbuild.yml
vendored
4
.github/workflows/appbuild.yml
vendored
@@ -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
|
||||
|
||||
2
.github/workflows/appstore-build-publish.yml
vendored
2
.github/workflows/appstore-build-publish.yml
vendored
@@ -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
|
||||
|
||||
4
.github/workflows/command-rebase.yml
vendored
4
.github/workflows/command-rebase.yml
vendored
@@ -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 }}
|
||||
|
||||
2
.github/workflows/cypress.yml
vendored
2
.github/workflows/cypress.yml
vendored
@@ -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
|
||||
|
||||
2
.github/workflows/integration.yml
vendored
2
.github/workflows/integration.yml
vendored
@@ -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
|
||||
|
||||
2
.github/workflows/lint-php-cs.yml
vendored
2
.github/workflows/lint-php-cs.yml
vendored
@@ -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
|
||||
|
||||
2
.github/workflows/lint-php.yml
vendored
2
.github/workflows/lint-php.yml
vendored
@@ -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
|
||||
|
||||
2
.github/workflows/nightly.yml
vendored
2
.github/workflows/nightly.yml
vendored
@@ -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
71
.github/workflows/npm-audit-fix.yml
vendored
Normal 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
|
||||
2
.github/workflows/phpunit.yml
vendored
2
.github/workflows/phpunit.yml
vendored
@@ -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
|
||||
|
||||
2
.github/workflows/psalm.yml
vendored
2
.github/workflows/psalm.yml
vendored
@@ -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
|
||||
|
||||
4
.github/workflows/update-nextcloud-ocp.yml
vendored
4
.github/workflows/update-nextcloud-ocp.yml
vendored
@@ -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"
|
||||
|
||||
28
CHANGELOG.md
28
CHANGELOG.md
@@ -1,6 +1,34 @@
|
||||
# Changelog
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## 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
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
- 🚀 Get your project organized
|
||||
|
||||
</description>
|
||||
<version>1.10.0-dev</version>
|
||||
<version>1.10.0-beta.1</version>
|
||||
<licence>agpl</licence>
|
||||
<author>Julius Härtl</author>
|
||||
<documentation>
|
||||
|
||||
60
composer.lock
generated
60
composer.lock
generated
@@ -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",
|
||||
@@ -1712,16 +1712,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 +1751,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",
|
||||
@@ -3882,16 +3882,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 +3961,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 +3977,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 +4211,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 +4255,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 +4271,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-02-14T08:03:56+00:00"
|
||||
"time": "2023-03-02T11:38:35+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/finder",
|
||||
@@ -5321,16 +5321,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 +5421,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",
|
||||
|
||||
@@ -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?"
|
||||
},
|
||||
|
||||
@@ -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;"
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
19
l10n/uk.js
19
l10n/uk.js
@@ -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" : "Прив'язати до картки",
|
||||
|
||||
19
l10n/uk.json
19
l10n/uk.json
@@ -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" : "Прив'язати до картки",
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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'];
|
||||
}
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
1303
package-lock.json
generated
1303
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
214
package.json
214
package.json
@@ -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.1",
|
||||
"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.3",
|
||||
"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.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.11.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"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -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: {
|
||||
|
||||
@@ -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: {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -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],
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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" />
|
||||
|
||||
@@ -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: [],
|
||||
|
||||
@@ -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,
|
||||
})
|
||||
|
||||
@@ -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
51
src/store/dashboard.js
Normal 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)
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -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],
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user