Compare commits

..

1 Commits

Author SHA1 Message Date
Robin Appelman
7b3f0bf068 fix: fix invalid optional parameter
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-07-23 19:01:27 +02:00
33 changed files with 217 additions and 652 deletions

View File

@@ -9,167 +9,167 @@
name: Build and publish app release
on:
release:
types: [published]
release:
types: [published]
jobs:
build_and_publish:
runs-on: ubuntu-latest
build_and_publish:
runs-on: ubuntu-latest
# Only allowed to be run on nextcloud-releases repositories
if: ${{ github.repository_owner == 'nextcloud-releases' }}
# Only allowed to be run on nextcloud-releases repositories
if: ${{ github.repository_owner == 'nextcloud-releases' }}
steps:
- name: Check actor permission
uses: skjnldsv/check-actor-permission@69e92a3c4711150929bca9fcf34448c5bf5526e7 # v3.0
with:
require: write
steps:
- name: Check actor permission
uses: skjnldsv/check-actor-permission@69e92a3c4711150929bca9fcf34448c5bf5526e7 # v3.0
with:
require: write
- name: Set app env
run: |
# Split and keep last
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
echo "APP_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV
- name: Set app env
run: |
# Split and keep last
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
echo "APP_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
path: ${{ env.APP_NAME }}
- name: Checkout
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
path: ${{ env.APP_NAME }}
- name: Get appinfo data
id: appinfo
uses: skjnldsv/xpath-action@7e6a7c379d0e9abc8acaef43df403ab4fc4f770c # master
with:
filename: ${{ env.APP_NAME }}/appinfo/info.xml
expression: "//info//dependencies//nextcloud/@min-version"
- name: Get appinfo data
id: appinfo
uses: skjnldsv/xpath-action@7e6a7c379d0e9abc8acaef43df403ab4fc4f770c # master
with:
filename: ${{ env.APP_NAME }}/appinfo/info.xml
expression: "//info//dependencies//nextcloud/@min-version"
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
id: versions
# Continue if no package.json
continue-on-error: true
with:
path: ${{ env.APP_NAME }}
fallbackNode: '^20'
fallbackNpm: '^10'
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
id: versions
# Continue if no package.json
continue-on-error: true
with:
path: ${{ env.APP_NAME }}
fallbackNode: '^20'
fallbackNpm: '^10'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
# Skip if no package.json
if: ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
# Skip if no package.json
if: ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v3
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
# Skip if no package.json
if: ${{ steps.versions.outputs.npmVersion }}
run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}'
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
# Skip if no package.json
if: ${{ steps.versions.outputs.npmVersion }}
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
- name: Get php version
id: php-versions
uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1
with:
filename: ${{ env.APP_NAME }}/appinfo/info.xml
- name: Get php version
id: php-versions
uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1
with:
filename: ${{ env.APP_NAME }}/appinfo/info.xml
- name: Set up php ${{ steps.php-versions.outputs.php-min }}
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 # v2.31.1
with:
php-version: ${{ steps.php-versions.outputs.php-min }}
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Set up php ${{ steps.php-versions.outputs.php-min }}
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 # v2
with:
php-version: ${{ steps.php-versions.outputs.php-min }}
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Check composer.json
id: check_composer
uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0
with:
files: "${{ env.APP_NAME }}/composer.json"
- name: Check composer.json
id: check_composer
uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0
with:
files: "${{ env.APP_NAME }}/composer.json"
- name: Install composer dependencies
if: steps.check_composer.outputs.files_exists == 'true'
run: |
cd ${{ env.APP_NAME }}
composer install --no-dev
- name: Install composer dependencies
if: steps.check_composer.outputs.files_exists == 'true'
run: |
cd ${{ env.APP_NAME }}
composer install --no-dev
- name: Build ${{ env.APP_NAME }}
# Skip if no package.json
if: ${{ steps.versions.outputs.nodeVersion }}
env:
CYPRESS_INSTALL_BINARY: 0
run: |
cd ${{ env.APP_NAME }}
npm ci
npm run build --if-present
- name: Build ${{ env.APP_NAME }}
# Skip if no package.json
if: ${{ steps.versions.outputs.nodeVersion }}
env:
NODE_ENV: production
run: |
cd ${{ env.APP_NAME }}
npm ci
npm run build --if-present
- name: Check Krankerl config
id: krankerl
uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0
with:
files: ${{ env.APP_NAME }}/krankerl.toml
- name: Check Krankerl config
id: krankerl
uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0
with:
files: ${{ env.APP_NAME }}/krankerl.toml
- name: Install Krankerl
if: steps.krankerl.outputs.files_exists == 'true'
run: |
wget https://github.com/ChristophWurst/krankerl/releases/download/v0.14.0/krankerl_0.14.0_amd64.deb
sudo dpkg -i krankerl_0.14.0_amd64.deb
- name: Install Krankerl
if: steps.krankerl.outputs.files_exists == 'true'
run: |
wget https://github.com/ChristophWurst/krankerl/releases/download/v0.14.0/krankerl_0.14.0_amd64.deb
sudo dpkg -i krankerl_0.14.0_amd64.deb
- name: Package ${{ env.APP_NAME }} ${{ env.APP_VERSION }} with krankerl
if: steps.krankerl.outputs.files_exists == 'true'
run: |
cd ${{ env.APP_NAME }}
krankerl package
- name: Package ${{ env.APP_NAME }} ${{ env.APP_VERSION }} with krankerl
if: steps.krankerl.outputs.files_exists == 'true'
run: |
cd ${{ env.APP_NAME }}
krankerl package
- name: Package ${{ env.APP_NAME }} ${{ env.APP_VERSION }} with makefile
if: steps.krankerl.outputs.files_exists != 'true'
run: |
cd ${{ env.APP_NAME }}
make appstore
- name: Package ${{ env.APP_NAME }} ${{ env.APP_VERSION }} with makefile
if: steps.krankerl.outputs.files_exists != 'true'
run: |
cd ${{ env.APP_NAME }}
make appstore
- name: Checkout server ${{ fromJSON(steps.appinfo.outputs.result).nextcloud.min-version }}
continue-on-error: true
id: server-checkout
run: |
NCVERSION='${{ fromJSON(steps.appinfo.outputs.result).nextcloud.min-version }}'
wget --quiet https://download.nextcloud.com/server/releases/latest-$NCVERSION.zip
unzip latest-$NCVERSION.zip
- name: Checkout server ${{ fromJSON(steps.appinfo.outputs.result).nextcloud.min-version }}
continue-on-error: true
id: server-checkout
run: |
NCVERSION=${{ fromJSON(steps.appinfo.outputs.result).nextcloud.min-version }}
wget --quiet https://download.nextcloud.com/server/releases/latest-$NCVERSION.zip
unzip latest-$NCVERSION.zip
- name: Checkout server master fallback
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
if: ${{ steps.server-checkout.outcome != 'success' }}
with:
submodules: true
repository: nextcloud/server
path: nextcloud
- name: Checkout server master fallback
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
if: ${{ steps.server-checkout.outcome != 'success' }}
with:
submodules: true
repository: nextcloud/server
path: nextcloud
- name: Sign app
run: |
# Extracting release
cd ${{ env.APP_NAME }}/build/artifacts
tar -xvf ${{ env.APP_NAME }}.tar.gz
cd ../../../
# Setting up keys
echo '${{ secrets.APP_PRIVATE_KEY }}' > ${{ env.APP_NAME }}.key
wget --quiet "https://github.com/nextcloud/app-certificate-requests/raw/master/${{ env.APP_NAME }}/${{ env.APP_NAME }}.crt"
# Signing
php nextcloud/occ integrity:sign-app --privateKey=../${{ env.APP_NAME }}.key --certificate=../${{ env.APP_NAME }}.crt --path=../${{ env.APP_NAME }}/build/artifacts/${{ env.APP_NAME }}
# Rebuilding archive
cd ${{ env.APP_NAME }}/build/artifacts
tar -zcvf ${{ env.APP_NAME }}.tar.gz ${{ env.APP_NAME }}
- name: Sign app
run: |
# Extracting release
cd ${{ env.APP_NAME }}/build/artifacts
tar -xvf ${{ env.APP_NAME }}.tar.gz
cd ../../../
# Setting up keys
echo "${{ secrets.APP_PRIVATE_KEY }}" > ${{ env.APP_NAME }}.key
wget --quiet "https://github.com/nextcloud/app-certificate-requests/raw/master/${{ env.APP_NAME }}/${{ env.APP_NAME }}.crt"
# Signing
php nextcloud/occ integrity:sign-app --privateKey=../${{ env.APP_NAME }}.key --certificate=../${{ env.APP_NAME }}.crt --path=../${{ env.APP_NAME }}/build/artifacts/${{ env.APP_NAME }}
# Rebuilding archive
cd ${{ env.APP_NAME }}/build/artifacts
tar -zcvf ${{ env.APP_NAME }}.tar.gz ${{ env.APP_NAME }}
- name: Attach tarball to github release
uses: svenstaro/upload-release-action@04733e069f2d7f7f0b4aebc4fbdbce8613b03ccd # v2
id: attach_to_release
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ env.APP_NAME }}/build/artifacts/${{ env.APP_NAME }}.tar.gz
asset_name: ${{ env.APP_NAME }}-${{ env.APP_VERSION }}.tar.gz
tag: ${{ github.ref }}
overwrite: true
- name: Attach tarball to github release
uses: svenstaro/upload-release-action@04733e069f2d7f7f0b4aebc4fbdbce8613b03ccd # v2
id: attach_to_release
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ env.APP_NAME }}/build/artifacts/${{ env.APP_NAME }}.tar.gz
asset_name: ${{ env.APP_NAME }}-${{ env.APP_VERSION }}.tar.gz
tag: ${{ github.ref }}
overwrite: true
- name: Upload app to Nextcloud appstore
uses: nextcloud-releases/nextcloud-appstore-push-action@a011fe619bcf6e77ddebc96f9908e1af4071b9c1 # v1
with:
app_name: ${{ env.APP_NAME }}
appstore_token: ${{ secrets.APPSTORE_TOKEN }}
download_url: ${{ steps.attach_to_release.outputs.browser_download_url }}
app_private_key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Upload app to Nextcloud appstore
uses: nextcloud-releases/nextcloud-appstore-push-action@a011fe619bcf6e77ddebc96f9908e1af4071b9c1 # v1
with:
app_name: ${{ env.APP_NAME }}
appstore_token: ${{ secrets.APPSTORE_TOKEN }}
download_url: ${{ steps.attach_to_release.outputs.browser_download_url }}
app_private_key: ${{ secrets.APP_PRIVATE_KEY }}

View File

@@ -30,7 +30,7 @@ jobs:
contents: write
steps:
- uses: mdecoleman/pr-branch-name@55795d86b4566d300d237883103f052125cc7508 # v3.0.0
- uses: mdecoleman/pr-branch-name@bab4c71506bcd299fb350af63bb8e53f2940a599 # v2.0.0
id: branchname
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
@@ -43,7 +43,7 @@ jobs:
# Enable GitHub auto merge
- name: Auto merge
uses: alexwilson/enable-github-automerge-action@984aa5760674115463cb7835dc156fcc17413419 # main
uses: alexwilson/enable-github-automerge-action@7bcf565e3edb508fd1e4a8814ba60233bfa027fb # main
if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-nextcloud-ocp')
with:
github-token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -5,32 +5,6 @@
# Changelog
All notable changes to this project will be documented in this file.
## 1.14.0-beta.1
### Fixed
- fix: card details focus issue with screen reader @luka-nextcloud [#5858](https://github.com/nextcloud/deck/pull/5858)
- Cleaning up unused indicies @mintsoft [#5612](https://github.com/nextcloud/deck/pull/5612)
- Change import command's config default argument @JimMadge [#5722](https://github.com/nextcloud/deck/pull/5722)
- don't reset update time when no update was written to db @grnd-alt [#6005](https://github.com/nextcloud/deck/pull/6005)
- docs: Fix symlink to readme @juliushaertl [#6033](https://github.com/nextcloud/deck/pull/6033)
- perf: Avoid fetching labels and owner details on permission check @juliushaertl [#6010](https://github.com/nextcloud/deck/pull/6010)
- Only check path for being accessible when the storage is a object home @mejo- [#6062](https://github.com/nextcloud/deck/pull/6062)
- Fix: incorrect height of editing windows and edit bar @pschopen [#6088](https://github.com/nextcloud/deck/pull/6088)
- fix: design review issues @luka-nextcloud [#6113](https://github.com/nextcloud/deck/pull/6113)
- fix: remove redundant log @luka-nextcloud [#6115](https://github.com/nextcloud/deck/pull/6115)
- fix: Adjust dependencies to fix filepicker @susnux [#5964](https://github.com/nextcloud/deck/pull/5964)
- fix: Remove bindParam usage with simpler query @juliushaertl [#6065](https://github.com/nextcloud/deck/pull/6065)
### Other
- Adds link to Nextcloud Deck for iOS in README.md file @StCyr [#5886](https://github.com/nextcloud/deck/pull/5886)
- choir(i18n): Change filter title @rakekniven [#5957](https://github.com/nextcloud/deck/pull/5957)
- chore: Clean up permission service @juliushaertl [#6011](https://github.com/nextcloud/deck/pull/6011)
- Update User_documentation_en.md @StCyr [#6029](https://github.com/nextcloud/deck/pull/6029)
- chore: Move comments event handler to use proper event dispatcher @juliushaertl [#6008](https://github.com/nextcloud/deck/pull/6008)
- Migrate REUSE to TOML format @AndyScherzinger [#6084](https://github.com/nextcloud/deck/pull/6084)
## 1.13.0-beta.1
### Added

View File

@@ -105,12 +105,6 @@ You can use the provided Makefile to run all tests by using:
make test
#### Running behat integration tests
Within `tests/integration/` run `composer install` and then choose one of the two options:
- Run tests with a local php server: `bash run.sh`
- Run against an existing Nextcloud installation: `BEHAT_SERVER_URL=http://nextcloud.local ./vendor/bin/behat --colors features/decks.feature`
### Documentation
The documentation for our REST API can be found at https://deck.readthedocs.io/en/latest/API/

View File

@@ -20,7 +20,7 @@
- 🚀 Get your project organized
</description>
<version>1.14.0-beta.1</version>
<version>1.14.0-dev</version>
<licence>agpl</licence>
<author>Julius Härtl</author>
<documentation>

View File

@@ -9,7 +9,7 @@
}
],
"require": {
"justinrainbow/json-schema": "^6.0"
"justinrainbow/json-schema": "^5.2"
},
"require-dev": {
"roave/security-advisories": "dev-master",

223
composer.lock generated
View File

@@ -4,144 +4,27 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "ee1c5b69795943e43d6277064d284ae0",
"content-hash": "91d1163b8b5b076f39a79a9c394d0217",
"packages": [
{
"name": "icecave/parity",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/icecave/parity.git",
"reference": "0109fef58b3230d23b20b2ac52ecdf477218d300"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/icecave/parity/zipball/0109fef58b3230d23b20b2ac52ecdf477218d300",
"reference": "0109fef58b3230d23b20b2ac52ecdf477218d300",
"shasum": ""
},
"require": {
"icecave/repr": "~1",
"php": ">=5.3"
},
"require-dev": {
"eloquent/liberator": "~1",
"icecave/archer": "~1"
},
"suggest": {
"eloquent/asplode": "Drop-in exception-based error handling."
},
"type": "library",
"autoload": {
"psr-0": {
"Icecave\\Parity": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "James Harris",
"email": "james.harris@icecave.com.au",
"homepage": "https://github.com/jmalloc"
}
],
"description": "A customizable deep comparison library.",
"homepage": "https://github.com/IcecaveStudios/parity",
"keywords": [
"compare",
"comparison",
"equal",
"equality",
"greater",
"less",
"sort",
"sorting"
],
"support": {
"issues": "https://github.com/icecave/parity/issues",
"source": "https://github.com/icecave/parity/tree/1.0.0"
},
"time": "2014-01-17T05:56:27+00:00"
},
{
"name": "icecave/repr",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/icecave/repr.git",
"reference": "8a3d2953adf5f464a06e3e2587aeacc97e2bed07"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/icecave/repr/zipball/8a3d2953adf5f464a06e3e2587aeacc97e2bed07",
"reference": "8a3d2953adf5f464a06e3e2587aeacc97e2bed07",
"shasum": ""
},
"require": {
"php": ">=5.3"
},
"require-dev": {
"icecave/archer": "~1"
},
"suggest": {
"eloquent/asplode": "Drop-in exception-based error handling."
},
"type": "library",
"autoload": {
"psr-4": {
"Icecave\\Repr\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "James Harris",
"email": "james.harris@icecave.com.au",
"homepage": "https://github.com/jmalloc"
}
],
"description": "A library for generating string representations of any value, inspired by Python's reprlib library.",
"homepage": "https://github.com/IcecaveStudios/repr",
"keywords": [
"human",
"readable",
"repr",
"representation",
"string"
],
"support": {
"issues": "https://github.com/icecave/repr/issues",
"source": "https://github.com/icecave/repr/tree/1.0.1"
},
"time": "2014-07-25T05:44:41+00:00"
},
{
"name": "justinrainbow/json-schema",
"version": "6.0.0",
"version": "5.3.0",
"source": {
"type": "git",
"url": "https://github.com/jsonrainbow/json-schema.git",
"reference": "a38c6198d53b09c0702f440585a4f4a5d9137bd9"
"reference": "feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/a38c6198d53b09c0702f440585a4f4a5d9137bd9",
"reference": "a38c6198d53b09c0702f440585a4f4a5d9137bd9",
"url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8",
"reference": "feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8",
"shasum": ""
},
"require": {
"icecave/parity": "1.0.0",
"marc-mabe/php-enum": "^2.0 || ^3.0 || ^4.0",
"php": ">=5.3.3"
"php": ">=7.1"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "~2.2.20 || ~2.19.0",
"friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1",
"json-schema/json-schema-test-suite": "1.2.0",
"phpunit/phpunit": "^4.8.35"
},
@@ -149,11 +32,6 @@
"bin/validate-json"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "6.x-dev"
}
},
"autoload": {
"psr-4": {
"JsonSchema\\": "src/JsonSchema/"
@@ -182,89 +60,16 @@
}
],
"description": "A library to validate a json schema.",
"homepage": "https://github.com/jsonrainbow/json-schema",
"homepage": "https://github.com/justinrainbow/json-schema",
"keywords": [
"json",
"schema"
],
"support": {
"issues": "https://github.com/jsonrainbow/json-schema/issues",
"source": "https://github.com/jsonrainbow/json-schema/tree/6.0.0"
"source": "https://github.com/jsonrainbow/json-schema/tree/5.3.0"
},
"time": "2024-07-30T17:49:21+00:00"
},
{
"name": "marc-mabe/php-enum",
"version": "v4.7.0",
"source": {
"type": "git",
"url": "https://github.com/marc-mabe/php-enum.git",
"reference": "3da42cc1daceaf98c858e56f59d1ccd52b011fdc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/marc-mabe/php-enum/zipball/3da42cc1daceaf98c858e56f59d1ccd52b011fdc",
"reference": "3da42cc1daceaf98c858e56f59d1ccd52b011fdc",
"shasum": ""
},
"require": {
"ext-reflection": "*",
"php": "^7.1 | ^8.0"
},
"require-dev": {
"phpbench/phpbench": "^0.16.10 || ^1.0.4",
"phpstan/phpstan": "^1.3.1",
"phpunit/phpunit": "^7.5.20 | ^8.5.22 | ^9.5.11",
"vimeo/psalm": "^4.17.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.6-dev",
"dev-3.x": "3.2-dev"
}
},
"autoload": {
"psr-4": {
"MabeEnum\\": "src/"
},
"classmap": [
"stubs/Stringable.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Marc Bennewitz",
"email": "dev@mabe.berlin",
"homepage": "https://mabe.berlin/",
"role": "Lead"
}
],
"description": "Simple and fast implementation of enumerations with native PHP",
"homepage": "https://github.com/marc-mabe/php-enum",
"keywords": [
"enum",
"enum-map",
"enum-set",
"enumeration",
"enumerator",
"enummap",
"enumset",
"map",
"set",
"type",
"type-hint",
"typehint"
],
"support": {
"issues": "https://github.com/marc-mabe/php-enum/issues",
"source": "https://github.com/marc-mabe/php-enum/tree/v4.7.0"
},
"time": "2022-04-19T02:21:46+00:00"
"time": "2024-07-06T21:00:26+00:00"
}
],
"packages-dev": [
@@ -444,12 +249,12 @@
"source": {
"type": "git",
"url": "https://github.com/nextcloud-deps/ocp.git",
"reference": "fb567bbfffc34cdd48efd19990b6b452c2eea6eb"
"reference": "a19e1b3d3ca65c22b5cef74c2de01cc362d624a1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/fb567bbfffc34cdd48efd19990b6b452c2eea6eb",
"reference": "fb567bbfffc34cdd48efd19990b6b452c2eea6eb",
"url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/a19e1b3d3ca65c22b5cef74c2de01cc362d624a1",
"reference": "a19e1b3d3ca65c22b5cef74c2de01cc362d624a1",
"shasum": ""
},
"require": {
@@ -481,7 +286,7 @@
"issues": "https://github.com/nextcloud-deps/ocp/issues",
"source": "https://github.com/nextcloud-deps/ocp/tree/master"
},
"time": "2024-08-03T00:37:02+00:00"
"time": "2024-07-20T00:36:41+00:00"
},
{
"name": "nikic/php-parser",

View File

@@ -21,7 +21,7 @@
import './commands.js'
Cypress.on('uncaught:exception', (err) => {
return !err.message.includes('ResizeObserver loop limit exceeded') && !err.message.includes('ResizeObserver loop completed with undelivered notifications')
return !err.message.includes('ResizeObserver loop limit exceeded')
})
// Alternatively you can use CommonJS syntax:

View File

@@ -251,7 +251,6 @@ OC.L10N.register(
"Remove due date" : "Suprimeix la data de caducitat",
"Mark as done" : "Marcat com a fet",
"Due at:" : "Venciment a:",
"Not done" : "No s'ha fet",
"Unarchive card" : "Desarxiva targeta",
"Archive card" : "Arxiva la targeta",
"Select Date" : "Selecciona la data",

View File

@@ -249,7 +249,6 @@
"Remove due date" : "Suprimeix la data de caducitat",
"Mark as done" : "Marcat com a fet",
"Due at:" : "Venciment a:",
"Not done" : "No s'ha fet",
"Unarchive card" : "Desarxiva targeta",
"Archive card" : "Arxiva la targeta",
"Select Date" : "Selecciona la data",

View File

@@ -37,10 +37,6 @@ OC.L10N.register(
"{user} has archived card {card} in list {stack} on board {board}" : "Ο/η {user} αρχειοθέτησε την κάρτα {card} στην λίστα {stack} του πίνακα {board} ",
"You have unarchived card {card} in list {stack} on board {board}" : "Επαναφέρατε από το αρχείο την καρτέλα {card} της λίστας {stack} του πίνακα {board}",
"{user} has unarchived card {card} in list {stack} on board {board}" : "Ο/η {user} επανέφερε από το αρχείο την κάρτα {card} της λίστας {stack} του πίνακα {board}",
"You have marked the card {card} as done in list {stack} on board {board}" : "Έχετε επισημάνει την κάρτα {card} ως ολοκληρωμένη στη λίστα {stack} του πίνακα {board}",
"{user} has marked card {card} as done in list {stack} on board {board}" : "{user} έχει επισημάνει την κάρτα {card} ως ολοκληρωμένη στη λίστα {stack} του πίνακα {board}",
"You have marked the card {card} as undone in list {stack} on board {board}" : "Έχετε επισημάνει την κάρτα {card} ως μη ολοκληρωμένη στη λίστα {stack} του πίνακα {board}",
"{user} has marked the card {card} as undone in list {stack} on board {board}" : "{user} έχει επισημάνει την κάρτα {card} ως μη ολοκληρωμένη στη λίστα {stack} του πίνακα {board}",
"You have removed the due date of card {card}" : "Καταργήσατε την ημερομηνία λήξης της καρτέλας {card}",
"{user} has removed the due date of card {card}" : "Ο/η {user} κατάργησε την ημερομηνία λήξης της καρτέλας {card}",
"You have set the due date of card {card} to {after}" : "Ορίσατε την ημερομηνία λήξης της καρτέλας {card} σε {after}",
@@ -88,7 +84,6 @@ OC.L10N.register(
"Deck board" : "Πίνακας του Deck",
"Owned by %1$s" : "Ανήκει στον/στην %1$s",
"Deck boards, cards and comments" : "Πίνακες, κάρτες και σχόλια Deck",
"Create a new deck card" : "Δημιουργήστε μια νέα κάρτα",
"Card comments" : "Σχόλια καρτέλας",
"%s on %s" : "%s στο %s",
"Deck boards and cards" : "Πίνακες και κάρτες Deck",
@@ -148,8 +143,6 @@ OC.L10N.register(
"Filter by tag" : "Φίλτρο ανά ετικέτα",
"Filter by assigned user" : "Φίλτρο ανά χρήστη",
"Unassigned" : "Χωρίς ανάθεση",
"Filter by status" : "Φίλτρο με βάση την κατάσταση",
"Open and completed" : "Ανοιχτά και ολοκληρωμένα",
"Open" : "Ανοιχτός",
"Completed" : "Ολοκληρωμένες",
"Filter by due date" : "Φίλτρο ανά ημερομηνία λήξης",
@@ -160,7 +153,6 @@ OC.L10N.register(
"No due date" : "Χωρίς ημερομηνία λήξης",
"Clear filter" : "Εκκαθάριση φίλτρου",
"View Modes" : "Τρόποι προβολής",
"Toggle View Modes" : "Εναλλαγή τρόπων προβολής",
"Hide archived cards" : "Απόκρυψη καρτελών που αρχειοθετήθηκαν",
"Show archived cards" : "Εμφάνιση καρτελών που αρχειοθετήθηκαν",
"Toggle compact mode" : "Εναλλαγή λειτουργίας μικρού μεγέθους",
@@ -179,8 +171,6 @@ OC.L10N.register(
"Deleted lists" : "Διαγραμμένες λίστες",
"Undo" : "Αναίρεση",
"Deleted cards" : "Διαγραμμένες καρτέλες",
"Share board with a user, group or team …" : "Κοινή χρήση πίνακα με έναν χρήστη, μια ομάδα ή team ...",
"Searching for users, groups and teams …" : "Αναζήτηση χρηστών, ομάδων και teams …",
"No participants found" : "Δε βρέθηκαν συμμετέχοντες",
"Board owner" : "Κάτοχος πίνακα",
"(Group)" : "(Ομάδα)",
@@ -210,7 +200,6 @@ OC.L10N.register(
"title and color value must be provided" : "ο τίτλος και η τιμή χρώματος πρέπει να παρέχονται",
"Board name" : "Όνομα πίνακα",
"Members" : "Μέλη",
"Assign to users/groups/team" : "Ανάθεση σε χρήστες/ομάδες/teams",
"Assign a user to this card…" : "Ανάθεση χρήστη στην καρτέλα...",
"Select a user to assign to this card…" : "Επιλέξτε έναν χρήστη για να του αναθέσετε αυτή την κάρτα...",
"Upload new files" : "Ανεβάστε νέα αρχεία",
@@ -257,7 +246,6 @@ OC.L10N.register(
"Remove due date" : "Αφαίρεση ημερομηνίας λήξης",
"Mark as done" : "Σήμανση ως ολοκληρωμένου",
"Due at:" : "Λήγει στις:",
"Not done" : "Μη ολοκληρωμένο",
"Unarchive card" : "Αναίρεση αρχειοθέτησης καρτέλας",
"Archive card" : "Αρχειοθέτηση καρτέλας",
"Select Date" : "Επιλέξτε ημερομηνία",
@@ -311,7 +299,6 @@ OC.L10N.register(
"Shared with you" : "Διαμοιρασμένα μαζί σας",
"Deck settings" : "Ρυθμίσεις Deck",
"Use bigger card view" : "Χρησιμοποιήστε μεγαλύτερη προβολή καρτέλας",
"Show card ID badge" : "Εμφάνιση ID κάρτας",
"Show boards in calendar/tasks" : "Εμφάνιση πινάκων στο ημερολόγιο / εργασίες",
"Limit board creation to some groups" : "Περιορισμός της δημιουργίας πινάκων σε ορισμένες ομάδες",
"Users outside of those groups will not be able to create their own boards, but will still be able to work on boards that have been shared with them." : "Οι χρήστες εκτός αυτών των ομάδων δεν θα μπορούν να δημιουργούν τους δικούς τους πίνακες, αλλά θα μπορούν να εργάζονται σε πίνακες που τους έχουν διαμοιραστεί.",
@@ -384,7 +371,6 @@ OC.L10N.register(
"List is empty" : "Η λίστα είναι κενή",
"Limit deck usage of groups" : "Περιορίστε τη χρήση της εφαρμογής deck σε ομάδες",
"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." : "Ο περιορισμός του Deck θα εμποδίσει τους χρήστες που δεν είναι μέρος αυτών των ομάδων να δημιουργούν δικούς τους πίνακες. Οι χρήστες θα εξακολουθήσουν να εργάζονται σε πίνακες που έχουν διαμοιραστεί μαζί τους.",
"Not completed" : "Μη ολοκληρωμένο",
"Filter by completed" : "Φίλτρο ανά ολοκλήρωση"
"Not completed" : "Μη ολοκληρωμένο"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -35,10 +35,6 @@
"{user} has archived card {card} in list {stack} on board {board}" : "Ο/η {user} αρχειοθέτησε την κάρτα {card} στην λίστα {stack} του πίνακα {board} ",
"You have unarchived card {card} in list {stack} on board {board}" : "Επαναφέρατε από το αρχείο την καρτέλα {card} της λίστας {stack} του πίνακα {board}",
"{user} has unarchived card {card} in list {stack} on board {board}" : "Ο/η {user} επανέφερε από το αρχείο την κάρτα {card} της λίστας {stack} του πίνακα {board}",
"You have marked the card {card} as done in list {stack} on board {board}" : "Έχετε επισημάνει την κάρτα {card} ως ολοκληρωμένη στη λίστα {stack} του πίνακα {board}",
"{user} has marked card {card} as done in list {stack} on board {board}" : "{user} έχει επισημάνει την κάρτα {card} ως ολοκληρωμένη στη λίστα {stack} του πίνακα {board}",
"You have marked the card {card} as undone in list {stack} on board {board}" : "Έχετε επισημάνει την κάρτα {card} ως μη ολοκληρωμένη στη λίστα {stack} του πίνακα {board}",
"{user} has marked the card {card} as undone in list {stack} on board {board}" : "{user} έχει επισημάνει την κάρτα {card} ως μη ολοκληρωμένη στη λίστα {stack} του πίνακα {board}",
"You have removed the due date of card {card}" : "Καταργήσατε την ημερομηνία λήξης της καρτέλας {card}",
"{user} has removed the due date of card {card}" : "Ο/η {user} κατάργησε την ημερομηνία λήξης της καρτέλας {card}",
"You have set the due date of card {card} to {after}" : "Ορίσατε την ημερομηνία λήξης της καρτέλας {card} σε {after}",
@@ -86,7 +82,6 @@
"Deck board" : "Πίνακας του Deck",
"Owned by %1$s" : "Ανήκει στον/στην %1$s",
"Deck boards, cards and comments" : "Πίνακες, κάρτες και σχόλια Deck",
"Create a new deck card" : "Δημιουργήστε μια νέα κάρτα",
"Card comments" : "Σχόλια καρτέλας",
"%s on %s" : "%s στο %s",
"Deck boards and cards" : "Πίνακες και κάρτες Deck",
@@ -146,8 +141,6 @@
"Filter by tag" : "Φίλτρο ανά ετικέτα",
"Filter by assigned user" : "Φίλτρο ανά χρήστη",
"Unassigned" : "Χωρίς ανάθεση",
"Filter by status" : "Φίλτρο με βάση την κατάσταση",
"Open and completed" : "Ανοιχτά και ολοκληρωμένα",
"Open" : "Ανοιχτός",
"Completed" : "Ολοκληρωμένες",
"Filter by due date" : "Φίλτρο ανά ημερομηνία λήξης",
@@ -158,7 +151,6 @@
"No due date" : "Χωρίς ημερομηνία λήξης",
"Clear filter" : "Εκκαθάριση φίλτρου",
"View Modes" : "Τρόποι προβολής",
"Toggle View Modes" : "Εναλλαγή τρόπων προβολής",
"Hide archived cards" : "Απόκρυψη καρτελών που αρχειοθετήθηκαν",
"Show archived cards" : "Εμφάνιση καρτελών που αρχειοθετήθηκαν",
"Toggle compact mode" : "Εναλλαγή λειτουργίας μικρού μεγέθους",
@@ -177,8 +169,6 @@
"Deleted lists" : "Διαγραμμένες λίστες",
"Undo" : "Αναίρεση",
"Deleted cards" : "Διαγραμμένες καρτέλες",
"Share board with a user, group or team …" : "Κοινή χρήση πίνακα με έναν χρήστη, μια ομάδα ή team ...",
"Searching for users, groups and teams …" : "Αναζήτηση χρηστών, ομάδων και teams …",
"No participants found" : "Δε βρέθηκαν συμμετέχοντες",
"Board owner" : "Κάτοχος πίνακα",
"(Group)" : "(Ομάδα)",
@@ -208,7 +198,6 @@
"title and color value must be provided" : "ο τίτλος και η τιμή χρώματος πρέπει να παρέχονται",
"Board name" : "Όνομα πίνακα",
"Members" : "Μέλη",
"Assign to users/groups/team" : "Ανάθεση σε χρήστες/ομάδες/teams",
"Assign a user to this card…" : "Ανάθεση χρήστη στην καρτέλα...",
"Select a user to assign to this card…" : "Επιλέξτε έναν χρήστη για να του αναθέσετε αυτή την κάρτα...",
"Upload new files" : "Ανεβάστε νέα αρχεία",
@@ -255,7 +244,6 @@
"Remove due date" : "Αφαίρεση ημερομηνίας λήξης",
"Mark as done" : "Σήμανση ως ολοκληρωμένου",
"Due at:" : "Λήγει στις:",
"Not done" : "Μη ολοκληρωμένο",
"Unarchive card" : "Αναίρεση αρχειοθέτησης καρτέλας",
"Archive card" : "Αρχειοθέτηση καρτέλας",
"Select Date" : "Επιλέξτε ημερομηνία",
@@ -309,7 +297,6 @@
"Shared with you" : "Διαμοιρασμένα μαζί σας",
"Deck settings" : "Ρυθμίσεις Deck",
"Use bigger card view" : "Χρησιμοποιήστε μεγαλύτερη προβολή καρτέλας",
"Show card ID badge" : "Εμφάνιση ID κάρτας",
"Show boards in calendar/tasks" : "Εμφάνιση πινάκων στο ημερολόγιο / εργασίες",
"Limit board creation to some groups" : "Περιορισμός της δημιουργίας πινάκων σε ορισμένες ομάδες",
"Users outside of those groups will not be able to create their own boards, but will still be able to work on boards that have been shared with them." : "Οι χρήστες εκτός αυτών των ομάδων δεν θα μπορούν να δημιουργούν τους δικούς τους πίνακες, αλλά θα μπορούν να εργάζονται σε πίνακες που τους έχουν διαμοιραστεί.",
@@ -382,7 +369,6 @@
"List is empty" : "Η λίστα είναι κενή",
"Limit deck usage of groups" : "Περιορίστε τη χρήση της εφαρμογής deck σε ομάδες",
"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." : "Ο περιορισμός του Deck θα εμποδίσει τους χρήστες που δεν είναι μέρος αυτών των ομάδων να δημιουργούν δικούς τους πίνακες. Οι χρήστες θα εξακολουθήσουν να εργάζονται σε πίνακες που έχουν διαμοιραστεί μαζί τους.",
"Not completed" : "Μη ολοκληρωμένο",
"Filter by completed" : "Φίλτρο ανά ολοκλήρωση"
"Not completed" : "Μη ολοκληρωμένο"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -28,11 +28,9 @@ OC.L10N.register(
"Do you want to overwrite it?" : "¿Deseas sobre escribirlo?",
"Drop your files to upload" : "Arrastre sus archivos para cargar",
"Add card" : "Agregar tarjeta",
"Active filters" : "Filtros activos",
"Filter by tag" : "Filtrar por etiqueta",
"Open" : "Abrir",
"Completed" : "Completado",
"Clear filter" : "Limpiar filtro",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Open details" : "Abrir detalles",

View File

@@ -26,11 +26,9 @@
"Do you want to overwrite it?" : "¿Deseas sobre escribirlo?",
"Drop your files to upload" : "Arrastre sus archivos para cargar",
"Add card" : "Agregar tarjeta",
"Active filters" : "Filtros activos",
"Filter by tag" : "Filtrar por etiqueta",
"Open" : "Abrir",
"Completed" : "Completado",
"Clear filter" : "Limpiar filtro",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Open details" : "Abrir detalles",

View File

@@ -110,7 +110,6 @@ OC.L10N.register(
"Archived cards" : "Arkistoidut kortit",
"Add list" : "Lisää lista",
"List name" : "Listan nimi",
"Active filters" : "Aktiiviset suodattimet",
"Apply filter" : "Toteuta suodatus",
"Filter by tag" : "Suodata tunnisteen perusteella",
"Filter by assigned user" : "Suodata määritetyn käyttäjän mukaan",

View File

@@ -108,7 +108,6 @@
"Archived cards" : "Arkistoidut kortit",
"Add list" : "Lisää lista",
"List name" : "Listan nimi",
"Active filters" : "Aktiiviset suodattimet",
"Apply filter" : "Toteuta suodatus",
"Filter by tag" : "Suodata tunnisteen perusteella",
"Filter by assigned user" : "Suodata määritetyn käyttäjän mukaan",

View File

@@ -186,7 +186,7 @@ OC.L10N.register(
"Board owner" : "보드 소유자",
"(Group)" : "(그룹)",
"(Team)" : "(팀)",
"Can edit" : "편집 허용",
"Can edit" : "수정할 수 있음",
"Can share" : "공유할 수 있음",
"Can manage" : "관리 가능",
"Owner" : "소유자",

View File

@@ -184,7 +184,7 @@
"Board owner" : "보드 소유자",
"(Group)" : "(그룹)",
"(Team)" : "(팀)",
"Can edit" : "편집 허용",
"Can edit" : "수정할 수 있음",
"Can share" : "공유할 수 있음",
"Can manage" : "관리 가능",
"Owner" : "소유자",

View File

@@ -150,7 +150,7 @@ OC.L10N.register(
"Filter by assigned user" : "Отбор по назначению:",
"Unassigned" : "Без назначения",
"Filter by status" : "Отбор по состоянию:",
"Open and completed" : "Открытые или завершённые",
"Open and completed" : "Открытые и завершённые",
"Open" : "Открытые",
"Completed" : "Завершённые",
"Filter by due date" : "Отбор по сроку исполнения:",

View File

@@ -148,7 +148,7 @@
"Filter by assigned user" : "Отбор по назначению:",
"Unassigned" : "Без назначения",
"Filter by status" : "Отбор по состоянию:",
"Open and completed" : "Открытые или завершённые",
"Open and completed" : "Открытые и завершённые",
"Open" : "Открытые",
"Completed" : "Завершённые",
"Filter by due date" : "Отбор по сроку исполнения:",

View File

@@ -12,7 +12,6 @@ use OCA\Deck\Db\CardMapper;
use OCA\Deck\Db\StackMapper;
use OCA\Deck\Model\CardDetails;
use OCA\Deck\Service\BoardService;
use OCA\Deck\Service\CommentService;
use OCP\App\IAppManager;
use OCP\DB\Exception;
use Symfony\Component\Console\Command\Command;
@@ -28,7 +27,6 @@ class UserExport extends Command {
private StackMapper $stackMapper,
private CardMapper $cardMapper,
private AssignmentMapper $assignedUsersMapper,
private CommentService $commentService,
) {
parent::__construct();
}
@@ -58,9 +56,6 @@ class UserExport extends Command {
$data = [];
foreach ($boards as $board) {
if ($board->getDeletedAt() > 0) {
continue;
}
$fullBoard = $this->boardMapper->find($board->getId(), true, true);
$data[$board->getId()] = $fullBoard->jsonSerialize();
$stacks = $this->stackMapper->findAll($board->getId());
@@ -73,13 +68,7 @@ class UserExport extends Command {
$fullCard->setAssignedUsers($assignedUsers);
$cardDetails = new CardDetails($fullCard, $fullBoard);
$comments = $this->commentService->list($card->getId());
$cardDetails->setCommentsCount(count($comments->getData()));
$cardJson = $cardDetails->jsonSerialize();
$cardJson['comments'] = $comments->getData();
$data[$board->getId()]['stacks'][$stack->getId()]['cards'][] = $cardJson;
$data[$board->getId()]['stacks'][$stack->getId()]['cards'][] = $cardDetails->jsonSerialize();
}
}
}

View File

@@ -58,7 +58,7 @@ class CommentEventListener implements IEventListener {
private function activityHandler(CommentsEvent $event): void {
$comment = $event->getComment();
$card = $this->cardMapper->find($comment->getObjectId());
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_CARD_COMMENT_CREATE, ['comment' => $comment], $comment->getActorId());
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_CARD_COMMENT_CREATE, ['comment' => $comment]);
}
private function notificationHandler(CommentsEvent $event): void {

View File

@@ -562,11 +562,6 @@ class BoardService {
foreach ($stacks as $stack) {
$newStack = new Stack();
$newStack->setTitle($stack->getTitle());
if ($stack->getOrder() == null) {
$newStack->setOrder(999);
} else {
$newStack->setOrder($stack->getOrder());
}
$newStack->setBoardId($newBoard->getId());
$this->stackMapper->insert($newStack);
}

View File

@@ -214,7 +214,7 @@ class ConfigService {
return $this->config->getUserValue($userId ?? $this->getUserId(), 'deck', 'attachment_folder', '/Deck');
}
public function setAttachmentFolder(?string $userId, string $path): void {
public function setAttachmentFolder(string $userId, string $path): void {
if ($userId === null && $this->getUserId() === null) {
throw new NoPermissionException('Must be logged in get the attachment folder');
}

View File

@@ -6,7 +6,6 @@
namespace OCA\Deck\Service\Importer\Systems;
use OC\Comments\Comment;
use OCA\Deck\BadRequestException;
use OCA\Deck\Db\Acl;
use OCA\Deck\Db\Assignment;
@@ -104,20 +103,8 @@ class DeckJsonService extends ABoardImportService {
}
public function getComments(): array {
$comments = [];
foreach ($this->tmpCards as $sourceCard) {
if (!property_exists($sourceCard, "comments")) {
continue;
}
$commentsOriginal = $sourceCard->comments;
foreach ($commentsOriginal as $commentOriginal) {
$comment = new Comment();
$comment->setActor($commentOriginal->actorType, $commentOriginal->actorId)
->setMessage($commentOriginal->message)->setCreationDateTime(\DateTime::createFromFormat('Y-m-d\TH:i:sP', $commentOriginal->creationDateTime));
$comments[$this->cards[$sourceCard->id]->getId()][$commentOriginal->id] = $comment;
}
}
return $comments;
// Comments are not implemented in export
return [];
}
public function getCardLabelAssignment(): array {

179
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "deck",
"version": "1.14.0-beta.1",
"version": "1.14.0-dev",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "deck",
"version": "1.14.0-beta.1",
"version": "1.14.0-dev",
"license": "agpl",
"dependencies": {
"@babel/polyfill": "^7.12.1",
@@ -16,15 +16,15 @@
"@nextcloud/capabilities": "^1.2.0",
"@nextcloud/dialogs": "^5.3.5",
"@nextcloud/event-bus": "^3.3.1",
"@nextcloud/files": "^3.7.0",
"@nextcloud/files": "^3.6.0",
"@nextcloud/initial-state": "^2.2.0",
"@nextcloud/l10n": "^3.1.0",
"@nextcloud/moment": "^1.3.1",
"@nextcloud/notify_push": "^1.3.0",
"@nextcloud/router": "^3.0.1",
"@nextcloud/vue": "^8.15.1",
"@nextcloud/vue": "^8.14.0",
"blueimp-md5": "^2.19.0",
"chroma-js": "^2.6.0",
"chroma-js": "^2.4.2",
"dompurify": "^3.1.6",
"lodash": "^4.17.21",
"markdown-it": "^14.1.0",
@@ -55,7 +55,7 @@
"@relative-ci/agent": "^4.2.9",
"@vue/test-utils": "^2.4.6",
"@vue/vue2-jest": "^29.2.6",
"cypress": "^13.13.2",
"cypress": "^13.13.1",
"eslint-plugin-cypress": "^3.3.0",
"eslint-webpack-plugin": "^4.2.0",
"jest": "^29.7.0",
@@ -3697,20 +3697,19 @@
}
},
"node_modules/@nextcloud/files": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.7.0.tgz",
"integrity": "sha512-u7Hwt7/13empViLvwHPQk1AnKjhDYf7tkXeCLaO6e03am2uqBlYwc3iUS4cZye5CuaEeJeW251jPUGTtRXjjWQ==",
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.6.0.tgz",
"integrity": "sha512-/3kzEJ1TsCgjkSVhjdI+FnF0c2rvYtiTAQPoNqkNQYFa7Vbor+XPuypBQIJZFMDMzEgUexAL4QuQT3YmeSfBAA==",
"dependencies": {
"@nextcloud/auth": "^2.3.0",
"@nextcloud/capabilities": "^1.2.0",
"@nextcloud/l10n": "^3.1.0",
"@nextcloud/logger": "^3.0.2",
"@nextcloud/paths": "^2.2.0",
"@nextcloud/paths": "^2.1.0",
"@nextcloud/router": "^3.0.1",
"@nextcloud/sharing": "^0.2.2",
"cancelable-promise": "^4.3.1",
"is-svg": "^5.0.1",
"typedoc-plugin-missing-exports": "^3.0.0",
"typescript-event-target": "^1.1.1",
"webdav": "^5.6.0"
},
@@ -3822,12 +3821,21 @@
}
},
"node_modules/@nextcloud/paths": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@nextcloud/paths/-/paths-2.2.1.tgz",
"integrity": "sha512-M3ShLjrxR7B48eKThLMoqbxTqTKyQXcwf9TgeXQGbCIhiHoXU6as5j8l5qNv/uZlANokVdowpuWHBi3b2+YNNA==",
"engines": {
"node": "^20.0.0",
"npm": "^10.0.0"
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@nextcloud/paths/-/paths-2.1.0.tgz",
"integrity": "sha512-8wX0gqwez0bTuAS8A0OEiqbbp0ZsqLr07zSErmS6OYhh9KZcSt/kO6lQV5tnrFqIqJVsxwz4kHUjtZXh6DSf9Q==",
"dependencies": {
"core-js": "^3.6.4"
}
},
"node_modules/@nextcloud/paths/node_modules/core-js": {
"version": "3.33.2",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.2.tgz",
"integrity": "sha512-XeBzWI6QL3nJQiHmdzbAOiMYqjrb7hwU7A39Qhvd/POSa/t9E1AeZyEZx3fNvp/vtM8zXwhoL0FsiS0hD0pruQ==",
"hasInstallScript": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
}
},
"node_modules/@nextcloud/router": {
@@ -3894,9 +3902,9 @@
}
},
"node_modules/@nextcloud/vue": {
"version": "8.15.1",
"resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-8.15.1.tgz",
"integrity": "sha512-gZEcXPNhRGYhjSd/IeTs0jQ5P8tPIv9BJm5A8qsdpB1Mb/Xb9suhJv1xHaeGcOGoUCcs7A66coPkCgv1zcSJ2w==",
"version": "8.14.0",
"resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-8.14.0.tgz",
"integrity": "sha512-hB3dG7tZWpItC74PfbTLW02754qYXFDH+h7Ksq6b7e8WlhnKLWrhNGKhSpNDt9/g+vb5bSIOxbiDZIJZ63hAuQ==",
"dependencies": {
"@floating-ui/dom": "^1.1.0",
"@linusborg/vue-simple-portal": "^0.1.5",
@@ -3909,7 +3917,6 @@
"@nextcloud/l10n": "^3.0.1",
"@nextcloud/logger": "^3.0.1",
"@nextcloud/router": "^3.0.0",
"@nextcloud/sharing": "^0.2.2",
"@nextcloud/timezones": "^0.1.1",
"@nextcloud/vue-select": "^3.25.0",
"@vueuse/components": "^10.9.0",
@@ -4234,24 +4241,6 @@
"url": "https://opencollective.com/core-js"
}
},
"node_modules/@shikijs/core": {
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.12.0.tgz",
"integrity": "sha512-mc1cLbm6UQ8RxLc0dZES7v5rkH+99LxQp/ZvTqV3NLyYsO/fD6JhEflP1H5b2SDq9gI0+0G36AVZWxvounfR9w==",
"peer": true,
"dependencies": {
"@types/hast": "^3.0.4"
}
},
"node_modules/@shikijs/core/node_modules/@types/hast": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
"integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
"peer": true,
"dependencies": {
"@types/unist": "*"
}
},
"node_modules/@sideway/address": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz",
@@ -6898,9 +6887,9 @@
"dev": true
},
"node_modules/chroma-js": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.6.0.tgz",
"integrity": "sha512-BLHvCB9s8Z1EV4ethr6xnkl/P2YRFOGqfgvuMG/MyCbZPrTA+NeiByY6XvgF0zP4/2deU2CXnWyMa3zu1LqQ3A=="
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz",
"integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A=="
},
"node_modules/chrome-trace-event": {
"version": "1.0.3",
@@ -7729,13 +7718,13 @@
"integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA=="
},
"node_modules/cypress": {
"version": "13.13.2",
"resolved": "https://registry.npmjs.org/cypress/-/cypress-13.13.2.tgz",
"integrity": "sha512-PvJQU33933NvS1StfzEb8/mu2kMy4dABwCF+yd5Bi7Qly1HOVf+Bufrygee/tlmty/6j5lX+KIi8j9Q3JUMbhA==",
"version": "13.13.1",
"resolved": "https://registry.npmjs.org/cypress/-/cypress-13.13.1.tgz",
"integrity": "sha512-8F9UjL5MDUdgC/S5hr8CGLHbS5gGht5UOV184qc2pFny43fnkoaKxlzH/U6//zmGu/xRTaKimNfjknLT8+UDFg==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
"@cypress/request": "^3.0.1",
"@cypress/request": "^3.0.0",
"@cypress/xvfb": "^1.2.4",
"@types/sinonjs__fake-timers": "8.1.1",
"@types/sizzle": "^2.3.2",
@@ -10018,9 +10007,9 @@
"peer": true
},
"node_modules/fast-xml-parser": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz",
"integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==",
"version": "4.3.6",
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.6.tgz",
"integrity": "sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw==",
"funding": [
{
"type": "github",
@@ -14389,12 +14378,6 @@
"yallist": "^2.1.2"
}
},
"node_modules/lunr": {
"version": "2.3.9",
"resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz",
"integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==",
"peer": true
},
"node_modules/make-dir": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
@@ -18116,25 +18099,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/shiki": {
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/shiki/-/shiki-1.12.0.tgz",
"integrity": "sha512-BuAxWOm5JhRcbSOl7XCei8wGjgJJonnV0oipUupPY58iULxUGyHhW5CF+9FRMuM1pcJ5cGEJGll1LusX6FwpPA==",
"peer": true,
"dependencies": {
"@shikijs/core": "1.12.0",
"@types/hast": "^3.0.4"
}
},
"node_modules/shiki/node_modules/@types/hast": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
"integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
"peer": true,
"dependencies": {
"@types/unist": "*"
}
},
"node_modules/side-channel": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
@@ -19696,64 +19660,11 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/typedoc": {
"version": "0.26.5",
"resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.26.5.tgz",
"integrity": "sha512-Vn9YKdjKtDZqSk+by7beZ+xzkkr8T8CYoiasqyt4TTRFy5+UHzL/mF/o4wGBjRF+rlWQHDb0t6xCpA3JNL5phg==",
"peer": true,
"dependencies": {
"lunr": "^2.3.9",
"markdown-it": "^14.1.0",
"minimatch": "^9.0.5",
"shiki": "^1.9.1",
"yaml": "^2.4.5"
},
"bin": {
"typedoc": "bin/typedoc"
},
"engines": {
"node": ">= 18"
},
"peerDependencies": {
"typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x"
}
},
"node_modules/typedoc-plugin-missing-exports": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/typedoc-plugin-missing-exports/-/typedoc-plugin-missing-exports-3.0.0.tgz",
"integrity": "sha512-R7D8fYrK34mBFZSlF1EqJxfqiUSlQSmyrCiQgTQD52nNm6+kUtqwiaqaNkuJ2rA2wBgWFecUA8JzHT7x2r7ePg==",
"peerDependencies": {
"typedoc": "0.26.x"
}
},
"node_modules/typedoc/node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"peer": true,
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/typedoc/node_modules/minimatch": {
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"peer": true,
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/typescript": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
"integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
"dev": true,
"peer": true,
"bin": {
"tsc": "bin/tsc",
@@ -21197,18 +21108,6 @@
"dev": true,
"license": "ISC"
},
"node_modules/yaml": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz",
"integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==",
"peer": true,
"bin": {
"yaml": "bin.mjs"
},
"engines": {
"node": ">= 14"
}
},
"node_modules/yargs": {
"version": "17.7.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",

View File

@@ -1,7 +1,7 @@
{
"name": "deck",
"description": "",
"version": "1.14.0-beta.1",
"version": "1.14.0-dev",
"authors": [
{
"name": "Julius Härtl",
@@ -37,15 +37,15 @@
"@nextcloud/capabilities": "^1.2.0",
"@nextcloud/dialogs": "^5.3.5",
"@nextcloud/event-bus": "^3.3.1",
"@nextcloud/files": "^3.7.0",
"@nextcloud/files": "^3.6.0",
"@nextcloud/initial-state": "^2.2.0",
"@nextcloud/l10n": "^3.1.0",
"@nextcloud/moment": "^1.3.1",
"@nextcloud/notify_push": "^1.3.0",
"@nextcloud/router": "^3.0.1",
"@nextcloud/vue": "^8.15.1",
"@nextcloud/vue": "^8.14.0",
"blueimp-md5": "^2.19.0",
"chroma-js": "^2.6.0",
"chroma-js": "^2.4.2",
"dompurify": "^3.1.6",
"lodash": "^4.17.21",
"markdown-it": "^14.1.0",
@@ -83,7 +83,7 @@
"@relative-ci/agent": "^4.2.9",
"@vue/test-utils": "^2.4.6",
"@vue/vue2-jest": "^29.2.6",
"cypress": "^13.13.2",
"cypress": "^13.13.1",
"eslint-plugin-cypress": "^3.3.0",
"eslint-webpack-plugin": "^4.2.0",
"jest": "^29.7.0",

View File

@@ -100,7 +100,6 @@
:placeholder="t('deck', 'Card name')"
required
pattern=".*\S+.*"
@focus="onCreateCardFocus"
@keydown.esc="stopCardCreation">
<input v-show="!stateCardCreating"
class="icon-confirm"
@@ -212,13 +211,6 @@ export default {
},
},
},
watch: {
showAddCard(newValue) {
if (!newValue) {
this.$store.dispatch('toggleShortcutLock', false)
}
},
},
methods: {
stopCardCreation(e) {
@@ -308,9 +300,6 @@ export default {
this.stateCardCreating = false
}
},
onCreateCardFocus() {
this.$store.dispatch('toggleShortcutLock', true)
},
},
}
</script>

View File

@@ -109,7 +109,6 @@ export default {
showArchived: state => state.showArchived,
currentBoard: state => state.currentBoard,
showCardCover: state => state.showCardCover,
shortcutLock: state => state.shortcutLock,
}),
...mapGetters([
'isArchived',
@@ -185,9 +184,6 @@ export default {
},
methods: {
focus(card) {
if (this.shortcutLock) {
return
}
card = this.$refs[`card${card}`]
card.focus()
},

View File

@@ -2,7 +2,7 @@
"require-dev": {
"phpunit/phpunit": "~9",
"behat/behat": "~3.14.0",
"guzzlehttp/guzzle": "7.9.2",
"guzzlehttp/guzzle": "7.9.1",
"jarnaiz/behat-junit-formatter": "^1.3",
"sabre/dav": "4.6.0",
"symfony/event-dispatcher": "~5.4"

View File

@@ -16,13 +16,7 @@ class ServerContext implements Context {
public function __construct($baseUrl) {
$this->rawBaseUrl = $baseUrl;
$testServerUrl = getenv('BEHAT_SERVER_URL');
if ($testServerUrl !== false) {
$this->rawBaseUrl = rtrim($testServerUrl, '/');
}
$this->__tConstruct($this->rawBaseUrl . '/ocs/', ['admin', 'admin'], '123456');
$this->__tConstruct($baseUrl . '/index.php/ocs/', ['admin', 'admin'], '123456');
}

View File

@@ -27,7 +27,6 @@ use OCA\Deck\Command\BoardImport;
use OCA\Deck\Command\UserExport;
use OCA\Deck\Service\BoardService;
use OCA\Deck\Service\CardService;
use OCA\Deck\Service\CommentService;
use OCA\Deck\Service\Importer\BoardImportService;
use OCA\Deck\Service\Importer\Systems\DeckJsonService;
use OCA\Deck\Service\PermissionService;
@@ -195,7 +194,6 @@ class ImportExportTest extends \Test\TestCase {
self::getFreshService(StackMapper::class),
self::getFreshService(CardMapper::class),
self::getFreshService(AssignmentMapper::class),
self::getFreshService(CommentService::class)
);
$exporter->setApplication($application);
$exporter->run($input, $output);

View File

@@ -23,7 +23,6 @@
namespace OCA\Deck\Command;
use OC\Comments\Comment;
use OCA\Deck\Db\AssignmentMapper;
use OCA\Deck\Db\Board;
use OCA\Deck\Db\BoardMapper;
@@ -32,9 +31,7 @@ use OCA\Deck\Db\CardMapper;
use OCA\Deck\Db\Stack;
use OCA\Deck\Db\StackMapper;
use OCA\Deck\Service\BoardService;
use OCA\Deck\Service\CommentService;
use OCP\App\IAppManager;
use OCP\AppFramework\Http\DataResponse;
use OCP\IGroupManager;
use OCP\IUserManager;
use Symfony\Component\Console\Input\InputInterface;
@@ -49,7 +46,6 @@ class UserExportTest extends \Test\TestCase {
protected $assignedUserMapper;
protected $userManager;
protected $groupManager;
protected $commentService;
private UserExport $userExport;
@@ -63,8 +59,7 @@ class UserExportTest extends \Test\TestCase {
$this->assignedUserMapper = $this->createMock(AssignmentMapper::class);
$this->userManager = $this->createMock(IUserManager::class);
$this->groupManager = $this->createMock(IGroupManager::class);
$this->commentService = $this->createMock(CommentService::class);
$this->userExport = new UserExport($this->appManager, $this->boardMapper, $this->boardService, $this->stackMapper, $this->cardMapper, $this->assignedUserMapper, $this->commentService);
$this->userExport = new UserExport($this->appManager, $this->boardMapper, $this->boardService, $this->stackMapper, $this->cardMapper, $this->assignedUserMapper, $this->userManager, $this->groupManager);
}
public function getBoard($id) {
@@ -85,13 +80,6 @@ class UserExportTest extends \Test\TestCase {
$card->setTitle('Card ' . $id);
return $card;
}
public function getComment($id) {
$comment = new Comment();
$comment->setActor("users", "admin");
$comment->setMessage("fake comment" . $id);
return $comment;
}
public function testExecute() {
$input = $this->createMock(InputInterface::class);
$input->expects($this->once())->method('getArgument')->with('user-id')->willReturn('admin');
@@ -119,13 +107,6 @@ class UserExportTest extends \Test\TestCase {
$this->getCard(2),
$this->getCard(3),
];
$comments = [
$this->getComment(1),
$this->getComment(2),
$this->getComment(3),
];
$this->commentService->expects($this->exactly(count($cards) * count($stacks) * count($boards)))->method('list')->willReturn(new DataResponse($comments));
$this->cardMapper->expects($this->exactly(count($boards) * count($stacks)))
->method('findAllByStack')
->willReturn($cards);